diff --git a/public/fonts/SpaceGrotesk-Bold.ttf b/public/fonts/SpaceGrotesk-Bold.ttf deleted file mode 100644 index 0408641c6..000000000 Binary files a/public/fonts/SpaceGrotesk-Bold.ttf and /dev/null differ diff --git a/public/fonts/SpaceGrotesk-Light.ttf b/public/fonts/SpaceGrotesk-Light.ttf deleted file mode 100644 index d41bcccd8..000000000 Binary files a/public/fonts/SpaceGrotesk-Light.ttf and /dev/null differ diff --git a/public/fonts/SpaceGrotesk-Medium.ttf b/public/fonts/SpaceGrotesk-Medium.ttf deleted file mode 100644 index 7d44b663b..000000000 Binary files a/public/fonts/SpaceGrotesk-Medium.ttf and /dev/null differ diff --git a/public/fonts/SpaceGrotesk-Regular.ttf b/public/fonts/SpaceGrotesk-Regular.ttf deleted file mode 100644 index 981bcf5b2..000000000 Binary files a/public/fonts/SpaceGrotesk-Regular.ttf and /dev/null differ diff --git a/public/fonts/SpaceGrotesk-SemiBold.ttf b/public/fonts/SpaceGrotesk-SemiBold.ttf deleted file mode 100644 index e7e02e51e..000000000 Binary files a/public/fonts/SpaceGrotesk-SemiBold.ttf and /dev/null differ diff --git a/public/fonts/SpaceMono-Regular.ttf b/public/fonts/SpaceMono-Regular.ttf deleted file mode 100755 index 28d7ff717..000000000 Binary files a/public/fonts/SpaceMono-Regular.ttf and /dev/null differ diff --git a/public/images/adaptive-icon.png b/public/images/adaptive-icon.png deleted file mode 100644 index 03d6f6b6c..000000000 Binary files a/public/images/adaptive-icon.png and /dev/null differ diff --git a/public/images/background-image.png b/public/images/background-image.png deleted file mode 100644 index 1832d7ea2..000000000 Binary files a/public/images/background-image.png and /dev/null differ diff --git a/public/images/badge.png b/public/images/badge.png deleted file mode 100644 index f850cbbd5..000000000 Binary files a/public/images/badge.png and /dev/null differ diff --git a/public/images/bg.jpeg b/public/images/bg.jpeg deleted file mode 100644 index e76acb986..000000000 Binary files a/public/images/bg.jpeg and /dev/null differ diff --git a/public/images/emoji1.png b/public/images/emoji1.png deleted file mode 100644 index 6edf4b0eb..000000000 Binary files a/public/images/emoji1.png and /dev/null differ diff --git a/public/images/emoji2.png b/public/images/emoji2.png deleted file mode 100644 index f34022e67..000000000 Binary files a/public/images/emoji2.png and /dev/null differ diff --git a/public/images/emoji3.png b/public/images/emoji3.png deleted file mode 100644 index e588b032c..000000000 Binary files a/public/images/emoji3.png and /dev/null differ diff --git a/public/images/emoji4.png b/public/images/emoji4.png deleted file mode 100644 index 148cc6dd3..000000000 Binary files a/public/images/emoji4.png and /dev/null differ diff --git a/public/images/emoji5.png b/public/images/emoji5.png deleted file mode 100644 index 441527417..000000000 Binary files a/public/images/emoji5.png and /dev/null differ diff --git a/public/images/emoji6.png b/public/images/emoji6.png deleted file mode 100644 index 71b149a95..000000000 Binary files a/public/images/emoji6.png and /dev/null differ diff --git a/public/images/favicon.png b/public/images/favicon.png deleted file mode 100644 index e75f697b1..000000000 Binary files a/public/images/favicon.png and /dev/null differ diff --git a/public/images/form 2 bg detail.png b/public/images/form 2 bg detail.png deleted file mode 100644 index ee28da68f..000000000 Binary files a/public/images/form 2 bg detail.png and /dev/null differ diff --git a/public/images/form-1-bg-detail.png b/public/images/form-1-bg-detail.png deleted file mode 100644 index 65897df04..000000000 Binary files a/public/images/form-1-bg-detail.png and /dev/null differ diff --git a/public/images/generalbots-192x192.png b/public/images/generalbots-192x192.png deleted file mode 100644 index 651fe52e9..000000000 Binary files a/public/images/generalbots-192x192.png and /dev/null differ diff --git a/public/images/icon.png b/public/images/icon.png deleted file mode 100644 index a0b1526fc..000000000 Binary files a/public/images/icon.png and /dev/null differ diff --git a/public/images/instagram-icon.png b/public/images/instagram-icon.png deleted file mode 100644 index b4314a7a9..000000000 Binary files a/public/images/instagram-icon.png and /dev/null differ diff --git a/public/images/instagram-icon.svg b/public/images/instagram-icon.svg deleted file mode 100644 index d5b396d4b..000000000 --- a/public/images/instagram-icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/images/logo-header-big.png b/public/images/logo-header-big.png deleted file mode 100644 index f6eb2e9dc..000000000 Binary files a/public/images/logo-header-big.png and /dev/null differ diff --git a/public/images/logo-header.png b/public/images/logo-header.png deleted file mode 100644 index 8d718e767..000000000 Binary files a/public/images/logo-header.png and /dev/null differ diff --git a/public/images/logo-icon.png b/public/images/logo-icon.png deleted file mode 100644 index 58aa764d6..000000000 Binary files a/public/images/logo-icon.png and /dev/null differ diff --git a/public/images/mercury.png b/public/images/mercury.png deleted file mode 100644 index 36e47eaa7..000000000 Binary files a/public/images/mercury.png and /dev/null differ diff --git a/public/images/splash.png b/public/images/splash.png deleted file mode 100644 index 0e89705a9..000000000 Binary files a/public/images/splash.png and /dev/null differ diff --git a/public/output.css b/public/output.css deleted file mode 100644 index ef3ff7a20..000000000 --- a/public/output.css +++ /dev/null @@ -1,4751 +0,0 @@ -/* -! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -5. Use the user's configured `sans` font-feature-settings by default. -6. Use the user's configured `sans` font-variation-settings by default. -*/ - -html { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - 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"; - /* 4 */ - font-feature-settings: normal; - /* 5 */ - font-variation-settings: normal; - /* 6 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font family by default. -2. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -[type='button'], -[type='reset'], -[type='submit'] { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* -Removes the default spacing and border for appropriate elements. -*/ - -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; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden] { - display: none; -} - -:root { - --background: 0 0% 100%; - --foreground: 0 0% 3.9%; - --card: 0 0% 100%; - --card-foreground: 0 0% 3.9%; - --popover: 0 0% 100%; - --popover-foreground: 0 0% 3.9%; - --primary: 0 0% 9%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 9%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 45.1%; - --accent: 0 0% 96.1%; - --accent-foreground: 0 0% 9%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 89.8%; - --input: 0 0% 89.8%; - --ring: 0 0% 3.9%; - --chart-1: 12 76% 61%; - --chart-2: 173 58% 39%; - --chart-3: 197 37% 24%; - --chart-4: 43 74% 66%; - --chart-5: 27 87% 67%; - --radius: 0.5rem - ; - --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: 220 13% 91%; - --sidebar-ring: 217.2 91.2% 59.8% -} - -.dark { - --background: 0 0% 3.9%; - --foreground: 0 0% 98%; - --card: 0 0% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 0 0% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 0 0% 9%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 0 0% 14.9%; - --ring: 0 0% 83.1%; - --chart-1: 220 70% 50%; - --chart-2: 160 60% 45%; - --chart-3: 30 80% 55%; - --chart-4: 280 65% 60%; - --chart-5: 340 75% 55% - ; - --sidebar-background: 240 5.9% 10%; - --sidebar-foreground: 240 4.8% 95.9%; - --sidebar-primary: 224.3 76.3% 48%; - --sidebar-primary-foreground: 0 0% 100%; - --sidebar-accent: 240 3.7% 15.9%; - --sidebar-accent-foreground: 240 4.8% 95.9%; - --sidebar-border: 240 3.7% 15.9%; - --sidebar-ring: 217.2 91.2% 59.8% -} - -* { - border-color: hsl(var(--border)); -} - -body { - background-color: hsl(var(--background)); - color: hsl(var(--foreground)); -} - -*, ::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 / 0.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 / 0.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: ; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .container { - max-width: 1536px; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.pointer-events-none { - pointer-events: none; -} - -.pointer-events-auto { - pointer-events: auto; -} - -.visible { - visibility: visible; -} - -.invisible { - visibility: hidden; -} - -.static { - position: static; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.inset-0 { - inset: 0px; -} - -.inset-x-0 { - left: 0px; - right: 0px; -} - -.inset-y-0 { - top: 0px; - bottom: 0px; -} - -.-bottom-12 { - bottom: -3rem; -} - -.-left-12 { - left: -3rem; -} - -.-right-1 { - right: -0.25rem; -} - -.-right-12 { - right: -3rem; -} - -.-top-1 { - top: -0.25rem; -} - -.-top-12 { - top: -3rem; -} - -.bottom-0 { - bottom: 0px; -} - -.bottom-3 { - bottom: 0.75rem; -} - -.left-0 { - left: 0px; -} - -.left-1 { - left: 0.25rem; -} - -.left-1\/2 { - left: 50%; -} - -.left-2 { - left: 0.5rem; -} - -.left-3 { - left: 0.75rem; -} - -.left-\[50\%\] { - left: 50%; -} - -.right-0 { - right: 0px; -} - -.right-1 { - right: 0.25rem; -} - -.right-2 { - right: 0.5rem; -} - -.right-3 { - right: 0.75rem; -} - -.right-4 { - right: 1rem; -} - -.right-6 { - right: 1.5rem; -} - -.top-0 { - top: 0px; -} - -.top-1 { - top: 0.25rem; -} - -.top-1\.5 { - top: 0.375rem; -} - -.top-1\/2 { - top: 50%; -} - -.top-2 { - top: 0.5rem; -} - -.top-2\.5 { - top: 0.625rem; -} - -.top-3 { - top: 0.75rem; -} - -.top-3\.5 { - top: 0.875rem; -} - -.top-4 { - top: 1rem; -} - -.top-\[1px\] { - top: 1px; -} - -.top-\[50\%\] { - top: 50%; -} - -.top-\[60\%\] { - top: 60%; -} - -.top-full { - top: 100%; -} - -.z-10 { - z-index: 10; -} - -.z-20 { - z-index: 20; -} - -.z-50 { - z-index: 50; -} - -.z-\[100\] { - z-index: 100; -} - -.z-\[1\] { - z-index: 1; -} - -.m-0 { - margin: 0px; -} - -.-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; -} - -.mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; -} - -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -.mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; -} - -.mx-3\.5 { - margin-left: 0.875rem; - margin-right: 0.875rem; -} - -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - -.mx-auto { - margin-left: auto; - margin-right: auto; -} - -.my-0 { - margin-top: 0px; - margin-bottom: 0px; -} - -.my-0\.5 { - margin-top: 0.125rem; - margin-bottom: 0.125rem; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; -} - -.my-8 { - margin-top: 2rem; - margin-bottom: 2rem; -} - -.-ml-4 { - margin-left: -1rem; -} - -.-mt-4 { - margin-top: -1rem; -} - -.mb-1 { - margin-bottom: 0.25rem; -} - -.mb-1\.5 { - margin-bottom: 0.375rem; -} - -.mb-2 { - margin-bottom: 0.5rem; -} - -.mb-3 { - margin-bottom: 0.75rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-6 { - margin-bottom: 1.5rem; -} - -.ml-1 { - margin-left: 0.25rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.ml-4 { - margin-left: 1rem; -} - -.ml-auto { - margin-left: auto; -} - -.mr-1 { - margin-right: 0.25rem; -} - -.mr-2 { - margin-right: 0.5rem; -} - -.mt-0 { - margin-top: 0px; -} - -.mt-0\.5 { - margin-top: 0.125rem; -} - -.mt-1 { - margin-top: 0.25rem; -} - -.mt-1\.5 { - margin-top: 0.375rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mt-24 { - margin-top: 6rem; -} - -.mt-3 { - margin-top: 0.75rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.mt-8 { - margin-top: 2rem; -} - -.mt-auto { - margin-top: auto; -} - -.line-clamp-1 { - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; -} - -.line-clamp-2 { - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; -} - -.block { - display: block; -} - -.inline-block { - display: inline-block; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.grid { - display: grid; -} - -.hidden { - display: none; -} - -.aspect-square { - aspect-ratio: 1 / 1; -} - -.aspect-video { - aspect-ratio: 16 / 9; -} - -.h-1 { - height: 0.25rem; -} - -.h-1\.5 { - height: 0.375rem; -} - -.h-1\/3 { - height: 33.333333%; -} - -.h-10 { - height: 2.5rem; -} - -.h-12 { - height: 3rem; -} - -.h-2 { - height: 0.5rem; -} - -.h-2\.5 { - height: 0.625rem; -} - -.h-20 { - height: 5rem; -} - -.h-24 { - height: 6rem; -} - -.h-3 { - height: 0.75rem; -} - -.h-3\.5 { - height: 0.875rem; -} - -.h-4 { - height: 1rem; -} - -.h-40 { - height: 10rem; -} - -.h-48 { - height: 12rem; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-7 { - height: 1.75rem; -} - -.h-8 { - height: 2rem; -} - -.h-80 { - height: 20rem; -} - -.h-9 { - height: 2.25rem; -} - -.h-\[1px\] { - height: 1px; -} - -.h-\[470px\] { - height: 470px; -} - -.h-\[52px\] { - height: 52px; -} - -.h-\[calc\(100vh-40px\)\] { - height: calc(100vh - 40px); -} - -.h-\[calc\(100vh-50px\)\] { - height: calc(100vh - 50px); -} - -.h-\[var\(--radix-navigation-menu-viewport-height\)\] { - height: var(--radix-navigation-menu-viewport-height); -} - -.h-\[var\(--radix-select-trigger-height\)\] { - height: var(--radix-select-trigger-height); -} - -.h-auto { - height: auto; -} - -.h-full { - height: 100%; -} - -.h-px { - height: 1px; -} - -.h-screen { - height: 100vh; -} - -.max-h-\[--radix-context-menu-content-available-height\] { - max-height: var(--radix-context-menu-content-available-height); -} - -.max-h-\[--radix-select-content-available-height\] { - max-height: var(--radix-select-content-available-height); -} - -.max-h-\[300px\] { - max-height: 300px; -} - -.max-h-\[800px\] { - max-height: 800px; -} - -.max-h-\[calc\(100vh-200px\)\] { - max-height: calc(100vh - 200px); -} - -.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\] { - max-height: var(--radix-dropdown-menu-content-available-height); -} - -.max-h-screen { - max-height: 100vh; -} - -.min-h-0 { - min-height: 0px; -} - -.min-h-\[100px\] { - min-height: 100px; -} - -.min-h-\[200px\] { - min-height: 200px; -} - -.min-h-\[60px\] { - min-height: 60px; -} - -.min-h-\[calc\(100vh-12rem\)\] { - min-height: calc(100vh - 12rem); -} - -.min-h-\[calc\(100vh-43px\)\] { - min-height: calc(100vh - 43px); -} - -.min-h-\[calc\(100vh-8rem\)\] { - min-height: calc(100vh - 8rem); -} - -.min-h-screen { - min-height: 100vh; -} - -.w-0 { - width: 0px; -} - -.w-1 { - width: 0.25rem; -} - -.w-10 { - width: 2.5rem; -} - -.w-12 { - width: 3rem; -} - -.w-2 { - width: 0.5rem; -} - -.w-2\.5 { - width: 0.625rem; -} - -.w-20 { - width: 5rem; -} - -.w-24 { - width: 6rem; -} - -.w-3 { - width: 0.75rem; -} - -.w-3\.5 { - width: 0.875rem; -} - -.w-3\/4 { - width: 75%; -} - -.w-4 { - width: 1rem; -} - -.w-5 { - width: 1.25rem; -} - -.w-56 { - width: 14rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-64 { - width: 16rem; -} - -.w-7 { - width: 1.75rem; -} - -.w-72 { - width: 18rem; -} - -.w-8 { - width: 2rem; -} - -.w-80 { - width: 20rem; -} - -.w-9 { - width: 2.25rem; -} - -.w-\[--sidebar-width\] { - width: var(--sidebar-width); -} - -.w-\[100px\] { - width: 100px; -} - -.w-\[140px\] { - width: 140px; -} - -.w-\[1px\] { - width: 1px; -} - -.w-\[200px\] { - width: 200px; -} - -.w-\[280px\] { - width: 280px; -} - -.w-\[40\%\] { - width: 40%; -} - -.w-\[535px\] { - width: 535px; -} - -.w-\[60\%\] { - width: 60%; -} - -.w-auto { - width: auto; -} - -.w-full { - width: 100%; -} - -.w-max { - width: -moz-max-content; - width: max-content; -} - -.w-px { - width: 1px; -} - -.min-w-0 { - min-width: 0px; -} - -.min-w-\[12rem\] { - min-width: 12rem; -} - -.min-w-\[250px\] { - min-width: 250px; -} - -.min-w-\[50px\] { - min-width: 50px; -} - -.min-w-\[8rem\] { - min-width: 8rem; -} - -.min-w-\[var\(--radix-select-trigger-width\)\] { - min-width: var(--radix-select-trigger-width); -} - -.min-w-fit { - min-width: -moz-fit-content; - min-width: fit-content; -} - -.min-w-max { - min-width: -moz-max-content; - min-width: max-content; -} - -.max-w-4xl { - max-width: 56rem; -} - -.max-w-\[--skeleton-width\] { - max-width: var(--skeleton-width); -} - -.max-w-\[85\%\] { - max-width: 85%; -} - -.max-w-full { - max-width: 100%; -} - -.max-w-lg { - max-width: 32rem; -} - -.max-w-max { - max-width: -moz-max-content; - max-width: max-content; -} - -.max-w-md { - max-width: 28rem; -} - -.max-w-none { - max-width: none; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-shrink-0 { - flex-shrink: 0; -} - -.shrink-0 { - flex-shrink: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.grow { - flex-grow: 1; -} - -.grow-0 { - flex-grow: 0; -} - -.basis-full { - flex-basis: 100%; -} - -.caption-bottom { - caption-side: bottom; -} - -.border-collapse { - border-collapse: collapse; -} - -.origin-\[--radix-context-menu-content-transform-origin\] { - transform-origin: var(--radix-context-menu-content-transform-origin); -} - -.origin-\[--radix-dropdown-menu-content-transform-origin\] { - transform-origin: var(--radix-dropdown-menu-content-transform-origin); -} - -.origin-\[--radix-hover-card-content-transform-origin\] { - transform-origin: var(--radix-hover-card-content-transform-origin); -} - -.origin-\[--radix-menubar-content-transform-origin\] { - transform-origin: var(--radix-menubar-content-transform-origin); -} - -.origin-\[--radix-popover-content-transform-origin\] { - transform-origin: var(--radix-popover-content-transform-origin); -} - -.origin-\[--radix-select-content-transform-origin\] { - transform-origin: var(--radix-select-content-transform-origin); -} - -.origin-\[--radix-tooltip-content-transform-origin\] { - transform-origin: var(--radix-tooltip-content-transform-origin); -} - -.-translate-x-1\/2 { - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.-translate-x-px { - --tw-translate-x: -1px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.translate-x-\[-50\%\] { - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.translate-x-px { - --tw-translate-x: 1px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.translate-y-\[-50\%\] { - --tw-translate-y: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.rotate-45 { - --tw-rotate: 45deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.rotate-90 { - --tw-rotate: 90deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -@keyframes bounce { - 0%, 100% { - transform: translateY(-25%); - animation-timing-function: cubic-bezier(0.8,0,1,1); - } - - 50% { - transform: none; - animation-timing-function: cubic-bezier(0,0,0.2,1); - } -} - -.animate-bounce { - animation: bounce 1s infinite; -} - -@keyframes pulse { - 50% { - opacity: .5; - } -} - -.animate-pulse { - animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; -} - -.cursor-default { - cursor: default; -} - -.cursor-not-allowed { - cursor: not-allowed; -} - -.cursor-pointer { - cursor: pointer; -} - -.touch-none { - touch-action: none; -} - -.select-none { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.resize-none { - resize: none; -} - -.resize { - resize: both; -} - -.list-none { - list-style-type: none; -} - -.appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.grid-cols-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); -} - -.grid-cols-7 { - grid-template-columns: repeat(7, minmax(0, 1fr)); -} - -.flex-row { - flex-direction: row; -} - -.flex-col { - flex-direction: column; -} - -.flex-col-reverse { - flex-direction: column-reverse; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.items-start { - align-items: flex-start; -} - -.items-end { - align-items: flex-end; -} - -.items-center { - align-items: center; -} - -.items-stretch { - align-items: stretch; -} - -.justify-start { - justify-content: flex-start; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.gap-1 { - gap: 0.25rem; -} - -.gap-1\.5 { - gap: 0.375rem; -} - -.gap-2 { - gap: 0.5rem; -} - -.gap-3 { - gap: 0.75rem; -} - -.gap-4 { - gap: 1rem; -} - -.gap-6 { - gap: 1.5rem; -} - -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-x-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.75rem * var(--tw-space-x-reverse)); - margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); -} - -.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)); -} - -.space-y-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); -} - -.space-y-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); -} - -.space-y-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); -} - -.space-y-6 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); -} - -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-x-auto { - overflow-x: auto; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.whitespace-nowrap { - white-space: nowrap; -} - -.whitespace-pre-wrap { - white-space: pre-wrap; -} - -.break-words { - overflow-wrap: break-word; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-2xl { - border-radius: 1rem; -} - -.rounded-\[2px\] { - border-radius: 2px; -} - -.rounded-\[inherit\] { - border-radius: inherit; -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-lg { - border-radius: var(--radius); -} - -.rounded-md { - border-radius: calc(var(--radius) - 2px); -} - -.rounded-none { - border-radius: 0px; -} - -.rounded-sm { - border-radius: calc(var(--radius) - 4px); -} - -.rounded-xl { - border-radius: 0.75rem; -} - -.rounded-r-md { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.rounded-t-\[10px\] { - border-top-left-radius: 10px; - border-top-right-radius: 10px; -} - -.rounded-tl-sm { - border-top-left-radius: calc(var(--radius) - 4px); -} - -.border { - border-width: 1px; -} - -.border-0 { - border-width: 0px; -} - -.border-2 { - border-width: 2px; -} - -.border-\[1\.5px\] { - border-width: 1.5px; -} - -.border-y { - border-top-width: 1px; - border-bottom-width: 1px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-b-2 { - border-bottom-width: 2px; -} - -.border-l { - border-left-width: 1px; -} - -.border-l-2 { - border-left-width: 2px; -} - -.border-l-4 { - border-left-width: 4px; -} - -.border-r { - border-right-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-dashed { - border-style: dashed; -} - -.border-\[--color-border\] { - border-color: var(--color-border); -} - -.border-accent { - border-color: hsl(var(--accent)); -} - -.border-background { - border-color: hsl(var(--background)); -} - -.border-blue-100 { - --tw-border-opacity: 1; - border-color: rgb(219 234 254 / var(--tw-border-opacity)); -} - -.border-blue-500 { - --tw-border-opacity: 1; - border-color: rgb(59 130 246 / var(--tw-border-opacity)); -} - -.border-border { - border-color: hsl(var(--border)); -} - -.border-border\/50 { - border-color: hsl(var(--border) / 0.5); -} - -.border-current { - border-color: currentColor; -} - -.border-destructive { - border-color: hsl(var(--destructive)); -} - -.border-destructive\/50 { - border-color: hsl(var(--destructive) / 0.5); -} - -.border-gray-100 { - --tw-border-opacity: 1; - border-color: rgb(243 244 246 / var(--tw-border-opacity)); -} - -.border-gray-200 { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity)); -} - -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)); -} - -.border-green-500 { - --tw-border-opacity: 1; - border-color: rgb(34 197 94 / var(--tw-border-opacity)); -} - -.border-green-600 { - --tw-border-opacity: 1; - border-color: rgb(22 163 74 / var(--tw-border-opacity)); -} - -.border-input { - border-color: hsl(var(--input)); -} - -.border-muted { - border-color: hsl(var(--muted)); -} - -.border-primary { - border-color: hsl(var(--primary)); -} - -.border-primary\/50 { - border-color: hsl(var(--primary) / 0.5); -} - -.border-purple-500 { - --tw-border-opacity: 1; - border-color: rgb(168 85 247 / var(--tw-border-opacity)); -} - -.border-red-500 { - --tw-border-opacity: 1; - border-color: rgb(239 68 68 / var(--tw-border-opacity)); -} - -.border-red-600 { - --tw-border-opacity: 1; - border-color: rgb(220 38 38 / var(--tw-border-opacity)); -} - -.border-secondary { - border-color: hsl(var(--secondary)); -} - -.border-sidebar-border { - border-color: hsl(var(--sidebar-border)); -} - -.border-transparent { - border-color: transparent; -} - -.border-yellow-600 { - --tw-border-opacity: 1; - border-color: rgb(202 138 4 / var(--tw-border-opacity)); -} - -.border-l-blue-500 { - --tw-border-opacity: 1; - border-left-color: rgb(59 130 246 / var(--tw-border-opacity)); -} - -.border-l-green-500 { - --tw-border-opacity: 1; - border-left-color: rgb(34 197 94 / var(--tw-border-opacity)); -} - -.border-l-muted { - border-left-color: hsl(var(--muted)); -} - -.border-l-purple-500 { - --tw-border-opacity: 1; - border-left-color: rgb(168 85 247 / var(--tw-border-opacity)); -} - -.border-l-red-500 { - --tw-border-opacity: 1; - border-left-color: rgb(239 68 68 / var(--tw-border-opacity)); -} - -.border-l-transparent { - border-left-color: transparent; -} - -.border-t-transparent { - border-top-color: transparent; -} - -.bg-\[--color-bg\] { - background-color: var(--color-bg); -} - -.bg-accent { - background-color: hsl(var(--accent)); -} - -.bg-accent\/50 { - background-color: hsl(var(--accent) / 0.5); -} - -.bg-background { - background-color: hsl(var(--background)); -} - -.bg-background\/95 { - background-color: hsl(var(--background) / 0.95); -} - -.bg-black { - --tw-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--tw-bg-opacity)); -} - -.bg-black\/20 { - background-color: rgb(0 0 0 / 0.2); -} - -.bg-black\/80 { - background-color: rgb(0 0 0 / 0.8); -} - -.bg-blue-100 { - --tw-bg-opacity: 1; - background-color: rgb(219 234 254 / var(--tw-bg-opacity)); -} - -.bg-blue-50 { - --tw-bg-opacity: 1; - background-color: rgb(239 246 255 / var(--tw-bg-opacity)); -} - -.bg-blue-500 { - --tw-bg-opacity: 1; - background-color: rgb(59 130 246 / var(--tw-bg-opacity)); -} - -.bg-blue-500\/20 { - background-color: rgb(59 130 246 / 0.2); -} - -.bg-blue-600 { - --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); -} - -.bg-border { - background-color: hsl(var(--border)); -} - -.bg-card { - background-color: hsl(var(--card)); -} - -.bg-destructive { - background-color: hsl(var(--destructive)); -} - -.bg-foreground { - background-color: hsl(var(--foreground)); -} - -.bg-gray-100 { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); -} - -.bg-gray-400 { - --tw-bg-opacity: 1; - background-color: rgb(156 163 175 / var(--tw-bg-opacity)); -} - -.bg-gray-50 { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.bg-gray-500 { - --tw-bg-opacity: 1; - background-color: rgb(107 114 128 / var(--tw-bg-opacity)); -} - -.bg-gray-800 { - --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity)); -} - -.bg-gray-900 { - --tw-bg-opacity: 1; - background-color: rgb(17 24 39 / var(--tw-bg-opacity)); -} - -.bg-green-100 { - --tw-bg-opacity: 1; - background-color: rgb(220 252 231 / var(--tw-bg-opacity)); -} - -.bg-green-400 { - --tw-bg-opacity: 1; - background-color: rgb(74 222 128 / var(--tw-bg-opacity)); -} - -.bg-green-500 { - --tw-bg-opacity: 1; - background-color: rgb(34 197 94 / var(--tw-bg-opacity)); -} - -.bg-green-500\/20 { - background-color: rgb(34 197 94 / 0.2); -} - -.bg-input { - background-color: hsl(var(--input)); -} - -.bg-muted { - background-color: hsl(var(--muted)); -} - -.bg-muted-foreground { - background-color: hsl(var(--muted-foreground)); -} - -.bg-muted\/50 { - background-color: hsl(var(--muted) / 0.5); -} - -.bg-orange-500 { - --tw-bg-opacity: 1; - background-color: rgb(249 115 22 / var(--tw-bg-opacity)); -} - -.bg-pink-500 { - --tw-bg-opacity: 1; - background-color: rgb(236 72 153 / var(--tw-bg-opacity)); -} - -.bg-popover { - background-color: hsl(var(--popover)); -} - -.bg-primary { - background-color: hsl(var(--primary)); -} - -.bg-primary\/10 { - background-color: hsl(var(--primary) / 0.1); -} - -.bg-primary\/20 { - background-color: hsl(var(--primary) / 0.2); -} - -.bg-purple-500 { - --tw-bg-opacity: 1; - background-color: rgb(168 85 247 / var(--tw-bg-opacity)); -} - -.bg-purple-500\/20 { - background-color: rgb(168 85 247 / 0.2); -} - -.bg-red-400 { - --tw-bg-opacity: 1; - background-color: rgb(248 113 113 / var(--tw-bg-opacity)); -} - -.bg-red-500 { - --tw-bg-opacity: 1; - background-color: rgb(239 68 68 / var(--tw-bg-opacity)); -} - -.bg-red-500\/20 { - background-color: rgb(239 68 68 / 0.2); -} - -.bg-secondary { - background-color: hsl(var(--secondary)); -} - -.bg-secondary\/20 { - background-color: hsl(var(--secondary) / 0.2); -} - -.bg-secondary\/50 { - background-color: hsl(var(--secondary) / 0.5); -} - -.bg-sidebar { - background-color: hsl(var(--sidebar-background)); -} - -.bg-sidebar-border { - background-color: hsl(var(--sidebar-border)); -} - -.bg-transparent { - background-color: transparent; -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); -} - -.bg-yellow-100 { - --tw-bg-opacity: 1; - background-color: rgb(254 249 195 / var(--tw-bg-opacity)); -} - -.bg-yellow-400 { - --tw-bg-opacity: 1; - background-color: rgb(250 204 21 / var(--tw-bg-opacity)); -} - -.bg-gradient-to-br { - background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)); -} - -.from-gray-50 { - --tw-gradient-from: #f9fafb var(--tw-gradient-from-position); - --tw-gradient-from-position: ; - --tw-gradient-to: rgb(249 250 251 / 0) var(--tw-gradient-from-position); - --tw-gradient-to-position: ; - --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); -} - -.from-primary\/10 { - --tw-gradient-from: hsl(var(--primary) / 0.1) var(--tw-gradient-from-position); - --tw-gradient-from-position: ; - --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-from-position); - --tw-gradient-to-position: ; - --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); -} - -.from-secondary\/50 { - --tw-gradient-from: hsl(var(--secondary) / 0.5) var(--tw-gradient-from-position); - --tw-gradient-from-position: ; - --tw-gradient-to: hsl(var(--secondary) / 0) var(--tw-gradient-from-position); - --tw-gradient-to-position: ; - --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); -} - -.to-accent\/10 { - --tw-gradient-to: hsl(var(--accent) / 0.1) var(--tw-gradient-to-position); - --tw-gradient-to-position: ; -} - -.to-gray-100 { - --tw-gradient-to: #f3f4f6 var(--tw-gradient-to-position); - --tw-gradient-to-position: ; -} - -.to-muted\/30 { - --tw-gradient-to: hsl(var(--muted) / 0.3) var(--tw-gradient-to-position); - --tw-gradient-to-position: ; -} - -.fill-current { - fill: currentColor; -} - -.fill-primary { - fill: hsl(var(--primary)); -} - -.object-contain { - -o-object-fit: contain; - object-fit: contain; -} - -.p-0 { - padding: 0px; -} - -.p-1 { - padding: 0.25rem; -} - -.p-1\.5 { - padding: 0.375rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-2\.5 { - padding: 0.625rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-4 { - padding: 1rem; -} - -.p-5 { - padding: 1.25rem; -} - -.p-6 { - padding: 1.5rem; -} - -.p-8 { - padding: 2rem; -} - -.p-\[1px\] { - padding: 1px; -} - -.px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; -} - -.px-1\.5 { - padding-left: 0.375rem; - padding-right: 0.375rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.px-2\.5 { - padding-left: 0.625rem; - padding-right: 0.625rem; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - -.py-0 { - padding-top: 0px; - padding-bottom: 0px; -} - -.py-0\.5 { - padding-top: 0.125rem; - padding-bottom: 0.125rem; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.py-1\.5 { - padding-top: 0.375rem; - padding-bottom: 0.375rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} - -.py-8 { - padding-top: 2rem; - padding-bottom: 2rem; -} - -.pb-1 { - padding-bottom: 0.25rem; -} - -.pb-3 { - padding-bottom: 0.75rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - -.pl-10 { - padding-left: 2.5rem; -} - -.pl-2 { - padding-left: 0.5rem; -} - -.pl-2\.5 { - padding-left: 0.625rem; -} - -.pl-3 { - padding-left: 0.75rem; -} - -.pl-4 { - padding-left: 1rem; -} - -.pl-8 { - padding-left: 2rem; -} - -.pl-9 { - padding-left: 2.25rem; -} - -.pr-14 { - padding-right: 3.5rem; -} - -.pr-2 { - padding-right: 0.5rem; -} - -.pr-2\.5 { - padding-right: 0.625rem; -} - -.pr-3 { - padding-right: 0.75rem; -} - -.pr-4 { - padding-right: 1rem; -} - -.pr-6 { - padding-right: 1.5rem; -} - -.pr-8 { - padding-right: 2rem; -} - -.pt-0 { - padding-top: 0px; -} - -.pt-1 { - padding-top: 0.25rem; -} - -.pt-3 { - padding-top: 0.75rem; -} - -.pt-4 { - padding-top: 1rem; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.align-middle { - vertical-align: middle; -} - -.font-mono { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - -.text-3xl { - font-size: 1.875rem; - line-height: 2.25rem; -} - -.text-\[0\.8rem\] { - font-size: 0.8rem; -} - -.text-base { - font-size: 1rem; - line-height: 1.5rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.font-bold { - font-weight: 700; -} - -.font-medium { - font-weight: 500; -} - -.font-normal { - font-weight: 400; -} - -.font-semibold { - font-weight: 600; -} - -.italic { - font-style: italic; -} - -.tabular-nums { - --tw-numeric-spacing: tabular-nums; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.leading-none { - line-height: 1; -} - -.leading-relaxed { - line-height: 1.625; -} - -.tracking-tight { - letter-spacing: -0.025em; -} - -.tracking-widest { - letter-spacing: 0.1em; -} - -.text-accent { - color: hsl(var(--accent)); -} - -.text-accent-foreground { - color: hsl(var(--accent-foreground)); -} - -.text-blue-500 { - --tw-text-opacity: 1; - color: rgb(59 130 246 / var(--tw-text-opacity)); -} - -.text-blue-600 { - --tw-text-opacity: 1; - color: rgb(37 99 235 / var(--tw-text-opacity)); -} - -.text-blue-800 { - --tw-text-opacity: 1; - color: rgb(30 64 175 / var(--tw-text-opacity)); -} - -.text-card-foreground { - color: hsl(var(--card-foreground)); -} - -.text-current { - color: currentColor; -} - -.text-destructive { - color: hsl(var(--destructive)); -} - -.text-destructive-foreground { - color: hsl(var(--destructive-foreground)); -} - -.text-foreground { - color: hsl(var(--foreground)); -} - -.text-foreground\/50 { - color: hsl(var(--foreground) / 0.5); -} - -.text-foreground\/80 { - color: hsl(var(--foreground) / 0.8); -} - -.text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.text-gray-700 { - --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); -} - -.text-gray-800 { - --tw-text-opacity: 1; - color: rgb(31 41 55 / var(--tw-text-opacity)); -} - -.text-green-300 { - --tw-text-opacity: 1; - color: rgb(134 239 172 / var(--tw-text-opacity)); -} - -.text-green-400 { - --tw-text-opacity: 1; - color: rgb(74 222 128 / var(--tw-text-opacity)); -} - -.text-green-500 { - --tw-text-opacity: 1; - color: rgb(34 197 94 / var(--tw-text-opacity)); -} - -.text-green-600 { - --tw-text-opacity: 1; - color: rgb(22 163 74 / var(--tw-text-opacity)); -} - -.text-green-800 { - --tw-text-opacity: 1; - color: rgb(22 101 52 / var(--tw-text-opacity)); -} - -.text-indigo-600 { - --tw-text-opacity: 1; - color: rgb(79 70 229 / var(--tw-text-opacity)); -} - -.text-muted-foreground { - color: hsl(var(--muted-foreground)); -} - -.text-muted-foreground\/70 { - color: hsl(var(--muted-foreground) / 0.7); -} - -.text-pink-500 { - --tw-text-opacity: 1; - color: rgb(236 72 153 / var(--tw-text-opacity)); -} - -.text-popover-foreground { - color: hsl(var(--popover-foreground)); -} - -.text-primary { - color: hsl(var(--primary)); -} - -.text-primary-foreground { - color: hsl(var(--primary-foreground)); -} - -.text-primary-foreground\/80 { - color: hsl(var(--primary-foreground) / 0.8); -} - -.text-purple-500 { - --tw-text-opacity: 1; - color: rgb(168 85 247 / var(--tw-text-opacity)); -} - -.text-purple-600 { - --tw-text-opacity: 1; - color: rgb(147 51 234 / var(--tw-text-opacity)); -} - -.text-red-500 { - --tw-text-opacity: 1; - color: rgb(239 68 68 / var(--tw-text-opacity)); -} - -.text-red-600 { - --tw-text-opacity: 1; - color: rgb(220 38 38 / var(--tw-text-opacity)); -} - -.text-secondary-foreground { - color: hsl(var(--secondary-foreground)); -} - -.text-sidebar-foreground { - color: hsl(var(--sidebar-foreground)); -} - -.text-sidebar-foreground\/70 { - color: hsl(var(--sidebar-foreground) / 0.7); -} - -.text-teal-600 { - --tw-text-opacity: 1; - color: rgb(13 148 136 / var(--tw-text-opacity)); -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.text-yellow-400 { - --tw-text-opacity: 1; - color: rgb(250 204 21 / var(--tw-text-opacity)); -} - -.text-yellow-500 { - --tw-text-opacity: 1; - color: rgb(234 179 8 / var(--tw-text-opacity)); -} - -.text-yellow-600 { - --tw-text-opacity: 1; - color: rgb(202 138 4 / var(--tw-text-opacity)); -} - -.text-yellow-800 { - --tw-text-opacity: 1; - color: rgb(133 77 14 / var(--tw-text-opacity)); -} - -.underline { - text-decoration-line: underline; -} - -.underline-offset-4 { - text-underline-offset: 4px; -} - -.opacity-0 { - opacity: 0; -} - -.opacity-50 { - opacity: 0.5; -} - -.opacity-60 { - opacity: 0.6; -} - -.opacity-70 { - opacity: 0.7; -} - -.opacity-90 { - opacity: 0.9; -} - -.shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px 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-2xl { - --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); - --tw-shadow-colored: 0 25px 50px -12px 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-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\] { - --tw-shadow: 0 0 0 1px hsl(var(--sidebar-border)); - --tw-shadow-colored: 0 0 0 1px 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-lg { - --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 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-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px 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-none { - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - 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 / 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); -} - -.shadow-xl { - --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px 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-black\/20 { - --tw-shadow-color: rgb(0 0 0 / 0.2); - --tw-shadow: var(--tw-shadow-colored); -} - -.outline-none { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.outline { - outline-style: solid; -} - -.ring-0 { - --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(0px + 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-1 { - --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, 0 0 #0000); -} - -.ring-ring { - --tw-ring-color: hsl(var(--ring)); -} - -.ring-sidebar-ring { - --tw-ring-color: hsl(var(--sidebar-ring)); -} - -.ring-offset-background { - --tw-ring-offset-color: hsl(var(--background)); -} - -.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); -} - -.backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-filter { - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.transition { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-\[left\2c right\2c width\] { - transition-property: left,right,width; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-\[margin\2c opacity\] { - transition-property: margin,opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-\[width\2c height\2c padding\] { - transition-property: width,height,padding; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-\[width\] { - transition-property: width; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-all { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-colors { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-opacity { - transition-property: opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-shadow { - transition-property: box-shadow; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-transform { - transition-property: transform; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.duration-1000 { - transition-duration: 1000ms; -} - -.duration-200 { - transition-duration: 200ms; -} - -.duration-300 { - transition-duration: 300ms; -} - -.ease-in-out { - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -.ease-linear { - transition-timing-function: linear; -} - -@keyframes enter { - from { - opacity: var(--tw-enter-opacity, 1); - transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0)); - } -} - -@keyframes exit { - to { - opacity: var(--tw-exit-opacity, 1); - transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0)); - } -} - -.animate-in { - animation-name: enter; - animation-duration: 150ms; - --tw-enter-opacity: initial; - --tw-enter-scale: initial; - --tw-enter-rotate: initial; - --tw-enter-translate-x: initial; - --tw-enter-translate-y: initial; -} - -.fade-in-0 { - --tw-enter-opacity: 0; -} - -.zoom-in-95 { - --tw-enter-scale: .95; -} - -.duration-1000 { - animation-duration: 1000ms; -} - -.duration-200 { - animation-duration: 200ms; -} - -.duration-300 { - animation-duration: 300ms; -} - -.ease-in-out { - animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -.ease-linear { - animation-timing-function: linear; -} - -.running { - animation-play-state: running; -} - -.dark .scrollbar-thin::-webkit-scrollbar-thumb { - background: #4b5563; -} - -.dark .scrollbar-thin::-webkit-scrollbar-thumb:hover { - background: #374151; -} - -.file\:border-0::file-selector-button { - border-width: 0px; -} - -.file\:bg-transparent::file-selector-button { - background-color: transparent; -} - -.file\:text-sm::file-selector-button { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.file\:font-medium::file-selector-button { - font-weight: 500; -} - -.file\:text-foreground::file-selector-button { - color: hsl(var(--foreground)); -} - -.placeholder\:text-muted-foreground::-moz-placeholder { - color: hsl(var(--muted-foreground)); -} - -.placeholder\:text-muted-foreground::placeholder { - color: hsl(var(--muted-foreground)); -} - -.after\:absolute::after { - content: var(--tw-content); - position: absolute; -} - -.after\:-inset-2::after { - content: var(--tw-content); - inset: -0.5rem; -} - -.after\:inset-y-0::after { - content: var(--tw-content); - top: 0px; - bottom: 0px; -} - -.after\:left-1\/2::after { - content: var(--tw-content); - left: 50%; -} - -.after\:w-1::after { - content: var(--tw-content); - width: 0.25rem; -} - -.after\:w-\[2px\]::after { - content: var(--tw-content); - width: 2px; -} - -.after\:-translate-x-1\/2::after { - content: var(--tw-content); - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.first\:rounded-l-md:first-child { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.first\:border-l:first-child { - border-left-width: 1px; -} - -.last\:rounded-r-md:last-child { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.focus-within\:relative:focus-within { - position: relative; -} - -.focus-within\:z-20:focus-within { - z-index: 20; -} - -.hover\:scale-105:hover { - --tw-scale-x: 1.05; - --tw-scale-y: 1.05; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.hover\:scale-110:hover { - --tw-scale-x: 1.1; - --tw-scale-y: 1.1; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.hover\:border-accent:hover { - border-color: hsl(var(--accent)); -} - -.hover\:border-green-500:hover { - --tw-border-opacity: 1; - border-color: rgb(34 197 94 / var(--tw-border-opacity)); -} - -.hover\:border-primary:hover { - border-color: hsl(var(--primary)); -} - -.hover\:bg-accent:hover { - background-color: hsl(var(--accent)); -} - -.hover\:bg-accent\/10:hover { - background-color: hsl(var(--accent) / 0.1); -} - -.hover\:bg-blue-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); -} - -.hover\:bg-blue-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(29 78 216 / var(--tw-bg-opacity)); -} - -.hover\:bg-card:hover { - background-color: hsl(var(--card)); -} - -.hover\:bg-destructive\/80:hover { - background-color: hsl(var(--destructive) / 0.8); -} - -.hover\:bg-destructive\/90:hover { - background-color: hsl(var(--destructive) / 0.9); -} - -.hover\:bg-gray-100:hover { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.hover\:bg-gray-50:hover { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.hover\:bg-green-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(21 128 61 / var(--tw-bg-opacity)); -} - -.hover\:bg-green-900\/30:hover { - background-color: rgb(20 83 45 / 0.3); -} - -.hover\:bg-muted:hover { - background-color: hsl(var(--muted)); -} - -.hover\:bg-muted\/50:hover { - background-color: hsl(var(--muted) / 0.5); -} - -.hover\:bg-primary:hover { - background-color: hsl(var(--primary)); -} - -.hover\:bg-primary\/80:hover { - background-color: hsl(var(--primary) / 0.8); -} - -.hover\:bg-primary\/90:hover { - background-color: hsl(var(--primary) / 0.9); -} - -.hover\:bg-secondary:hover { - background-color: hsl(var(--secondary)); -} - -.hover\:bg-secondary\/80:hover { - background-color: hsl(var(--secondary) / 0.8); -} - -.hover\:bg-sidebar-accent:hover { - background-color: hsl(var(--sidebar-accent)); -} - -.hover\:text-accent-foreground:hover { - color: hsl(var(--accent-foreground)); -} - -.hover\:text-foreground:hover { - color: hsl(var(--foreground)); -} - -.hover\:text-green-300:hover { - --tw-text-opacity: 1; - color: rgb(134 239 172 / var(--tw-text-opacity)); -} - -.hover\:text-muted-foreground:hover { - color: hsl(var(--muted-foreground)); -} - -.hover\:text-primary:hover { - color: hsl(var(--primary)); -} - -.hover\:text-primary-foreground:hover { - color: hsl(var(--primary-foreground)); -} - -.hover\:text-secondary-foreground:hover { - color: hsl(var(--secondary-foreground)); -} - -.hover\:text-sidebar-accent-foreground:hover { - color: hsl(var(--sidebar-accent-foreground)); -} - -.hover\:underline:hover { - text-decoration-line: underline; -} - -.hover\:opacity-100:hover { - opacity: 1; -} - -.hover\:opacity-90:hover { - opacity: 0.9; -} - -.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover { - --tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent)); - --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.hover\:shadow-none:hover { - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.hover\:shadow-xl:hover { - --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.hover\:after\:bg-sidebar-border:hover::after { - content: var(--tw-content); - background-color: hsl(var(--sidebar-border)); -} - -.focus\:border-primary:focus { - border-color: hsl(var(--primary)); -} - -.focus\:border-transparent:focus { - border-color: transparent; -} - -.focus\:bg-accent:focus { - background-color: hsl(var(--accent)); -} - -.focus\:bg-primary:focus { - background-color: hsl(var(--primary)); -} - -.focus\:text-accent-foreground:focus { - color: hsl(var(--accent-foreground)); -} - -.focus\:text-destructive:focus { - color: hsl(var(--destructive)); -} - -.focus\:text-primary-foreground:focus { - color: hsl(var(--primary-foreground)); -} - -.focus\:opacity-100:focus { - opacity: 1; -} - -.focus\:outline-none:focus { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus\:ring-1:focus { - --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, 0 0 #0000); -} - -.focus\:ring-2:focus { - --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, 0 0 #0000); -} - -.focus\:ring-blue-500:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity)); -} - -.focus\:ring-primary:focus { - --tw-ring-color: hsl(var(--primary)); -} - -.focus\:ring-ring:focus { - --tw-ring-color: hsl(var(--ring)); -} - -.focus\:ring-offset-2:focus { - --tw-ring-offset-width: 2px; -} - -.focus-visible\:outline-none:focus-visible { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus-visible\:ring-1:focus-visible { - --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, 0 0 #0000); -} - -.focus-visible\:ring-2:focus-visible { - --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, 0 0 #0000); -} - -.focus-visible\:ring-ring:focus-visible { - --tw-ring-color: hsl(var(--ring)); -} - -.focus-visible\:ring-sidebar-ring:focus-visible { - --tw-ring-color: hsl(var(--sidebar-ring)); -} - -.focus-visible\:ring-offset-1:focus-visible { - --tw-ring-offset-width: 1px; -} - -.focus-visible\:ring-offset-2:focus-visible { - --tw-ring-offset-width: 2px; -} - -.focus-visible\:ring-offset-background:focus-visible { - --tw-ring-offset-color: hsl(var(--background)); -} - -.active\:bg-sidebar-accent:active { - background-color: hsl(var(--sidebar-accent)); -} - -.active\:text-sidebar-accent-foreground:active { - color: hsl(var(--sidebar-accent-foreground)); -} - -.disabled\:pointer-events-none:disabled { - pointer-events: none; -} - -.disabled\:cursor-not-allowed:disabled { - cursor: not-allowed; -} - -.disabled\:opacity-50:disabled { - opacity: 0.5; -} - -.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100 { - opacity: 1; -} - -.group:hover .group-hover\:text-accent { - color: hsl(var(--accent)); -} - -.group\/menu-item:hover .group-hover\/menu-item\:opacity-100 { - opacity: 1; -} - -.group:hover .group-hover\:opacity-100 { - opacity: 1; -} - -.group:hover .group-hover\:shadow-sm { - --tw-shadow: 0 1px 2px 0 rgb(0 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); -} - -.group[data-collapsed=true] .group-\[\[data-collapsed\=true\]\]\:justify-center { - justify-content: center; -} - -.group.destructive .group-\[\.destructive\]\:border-muted\/40 { - border-color: hsl(var(--muted) / 0.4); -} - -.group.toaster .group-\[\.toaster\]\:border-border { - border-color: hsl(var(--border)); -} - -.group.toast .group-\[\.toast\]\:bg-muted { - background-color: hsl(var(--muted)); -} - -.group.toast .group-\[\.toast\]\:bg-primary { - background-color: hsl(var(--primary)); -} - -.group.toaster .group-\[\.toaster\]\:bg-background { - background-color: hsl(var(--background)); -} - -.group[data-collapsed=true] .group-\[\[data-collapsed\=true\]\]\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.group.destructive .group-\[\.destructive\]\:text-red-300 { - --tw-text-opacity: 1; - color: rgb(252 165 165 / var(--tw-text-opacity)); -} - -.group.toast .group-\[\.toast\]\:text-muted-foreground { - color: hsl(var(--muted-foreground)); -} - -.group.toast .group-\[\.toast\]\:text-primary-foreground { - color: hsl(var(--primary-foreground)); -} - -.group.toaster .group-\[\.toaster\]\:text-foreground { - color: hsl(var(--foreground)); -} - -.group.toaster .group-\[\.toaster\]\:shadow-lg { - --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 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); -} - -.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover { - border-color: hsl(var(--destructive) / 0.3); -} - -.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive:hover { - background-color: hsl(var(--destructive)); -} - -.group.destructive .group-\[\.destructive\]\:hover\:text-destructive-foreground:hover { - color: hsl(var(--destructive-foreground)); -} - -.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover { - --tw-text-opacity: 1; - color: rgb(254 242 242 / var(--tw-text-opacity)); -} - -.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus { - --tw-ring-color: hsl(var(--destructive)); -} - -.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity)); -} - -.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus { - --tw-ring-offset-color: #dc2626; -} - -.peer\/menu-button:hover ~ .peer-hover\/menu-button\:text-sidebar-accent-foreground { - color: hsl(var(--sidebar-accent-foreground)); -} - -.peer:disabled ~ .peer-disabled\:cursor-not-allowed { - cursor: not-allowed; -} - -.peer:disabled ~ .peer-disabled\:opacity-70 { - opacity: 0.7; -} - -.aria-disabled\:pointer-events-none[aria-disabled="true"] { - pointer-events: none; -} - -.aria-disabled\:opacity-50[aria-disabled="true"] { - opacity: 0.5; -} - -.aria-selected\:bg-accent[aria-selected="true"] { - background-color: hsl(var(--accent)); -} - -.aria-selected\:bg-accent\/50[aria-selected="true"] { - background-color: hsl(var(--accent) / 0.5); -} - -.aria-selected\:text-accent-foreground[aria-selected="true"] { - color: hsl(var(--accent-foreground)); -} - -.aria-selected\:text-muted-foreground[aria-selected="true"] { - color: hsl(var(--muted-foreground)); -} - -.aria-selected\:opacity-100[aria-selected="true"] { - opacity: 1; -} - -.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true] { - pointer-events: none; -} - -.data-\[disabled\]\:pointer-events-none[data-disabled] { - pointer-events: none; -} - -.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical] { - height: 1px; -} - -.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical] { - width: 100%; -} - -.data-\[side\=bottom\]\:translate-y-1[data-side=bottom] { - --tw-translate-y: 0.25rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[side\=left\]\:-translate-x-1[data-side=left] { - --tw-translate-x: -0.25rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[side\=right\]\:translate-x-1[data-side=right] { - --tw-translate-x: 0.25rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[side\=top\]\:-translate-y-1[data-side=top] { - --tw-translate-y: -0.25rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[state\=checked\]\:translate-x-4[data-state=checked] { - --tw-translate-x: 1rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked] { - --tw-translate-x: 0px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel] { - --tw-translate-x: 0px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end] { - --tw-translate-x: var(--radix-toast-swipe-end-x); - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move] { - --tw-translate-x: var(--radix-toast-swipe-move-x); - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -@keyframes accordion-up { - from { - height: var(--radix-accordion-content-height); - } - - to { - height: 0; - } -} - -.data-\[state\=closed\]\:animate-accordion-up[data-state=closed] { - animation: accordion-up 0.2s ease-out; -} - -@keyframes accordion-down { - from { - height: 0; - } - - to { - height: var(--radix-accordion-content-height); - } -} - -.data-\[state\=open\]\:animate-accordion-down[data-state=open] { - animation: accordion-down 0.2s ease-out; -} - -.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical] { - flex-direction: column; -} - -.data-\[active\=true\]\:bg-sidebar-accent[data-active=true] { - background-color: hsl(var(--sidebar-accent)); -} - -.data-\[selected\=true\]\:bg-accent[data-selected=true] { - background-color: hsl(var(--accent)); -} - -.data-\[state\=active\]\:bg-accent[data-state=active] { - background-color: hsl(var(--accent)); -} - -.data-\[state\=active\]\:bg-background[data-state=active] { - background-color: hsl(var(--background)); -} - -.data-\[state\=checked\]\:bg-primary[data-state=checked] { - background-color: hsl(var(--primary)); -} - -.data-\[state\=on\]\:bg-accent[data-state=on] { - background-color: hsl(var(--accent)); -} - -.data-\[state\=open\]\:bg-accent[data-state=open] { - background-color: hsl(var(--accent)); -} - -.data-\[state\=open\]\:bg-accent\/50[data-state=open] { - background-color: hsl(var(--accent) / 0.5); -} - -.data-\[state\=open\]\:bg-secondary[data-state=open] { - background-color: hsl(var(--secondary)); -} - -.data-\[state\=selected\]\:bg-muted[data-state=selected] { - background-color: hsl(var(--muted)); -} - -.data-\[state\=unchecked\]\:bg-input[data-state=unchecked] { - background-color: hsl(var(--input)); -} - -.data-\[collapsed\=true\]\:py-2[data-collapsed=true] { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.data-\[active\=true\]\:font-medium[data-active=true] { - font-weight: 500; -} - -.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true] { - color: hsl(var(--sidebar-accent-foreground)); -} - -.data-\[placeholder\]\:text-muted-foreground[data-placeholder] { - color: hsl(var(--muted-foreground)); -} - -.data-\[selected\=true\]\:text-accent-foreground[data-selected=true] { - color: hsl(var(--accent-foreground)); -} - -.data-\[state\=active\]\:text-foreground[data-state=active] { - color: hsl(var(--foreground)); -} - -.data-\[state\=checked\]\:text-primary-foreground[data-state=checked] { - color: hsl(var(--primary-foreground)); -} - -.data-\[state\=on\]\:text-accent-foreground[data-state=on] { - color: hsl(var(--accent-foreground)); -} - -.data-\[state\=open\]\:text-accent-foreground[data-state=open] { - color: hsl(var(--accent-foreground)); -} - -.data-\[state\=open\]\:text-muted-foreground[data-state=open] { - color: hsl(var(--muted-foreground)); -} - -.data-\[disabled\=true\]\:opacity-50[data-disabled=true] { - opacity: 0.5; -} - -.data-\[disabled\]\:opacity-50[data-disabled] { - opacity: 0.5; -} - -.data-\[state\=open\]\:opacity-100[data-state=open] { - opacity: 1; -} - -.data-\[state\=active\]\:shadow[data-state=active] { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.data-\[swipe\=move\]\:transition-none[data-swipe=move] { - transition-property: none; -} - -.data-\[state\=closed\]\:duration-300[data-state=closed] { - transition-duration: 300ms; -} - -.data-\[state\=open\]\:duration-500[data-state=open] { - transition-duration: 500ms; -} - -.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-] { - animation-name: enter; - animation-duration: 150ms; - --tw-enter-opacity: initial; - --tw-enter-scale: initial; - --tw-enter-rotate: initial; - --tw-enter-translate-x: initial; - --tw-enter-translate-y: initial; -} - -.data-\[state\=open\]\:animate-in[data-state=open] { - animation-name: enter; - animation-duration: 150ms; - --tw-enter-opacity: initial; - --tw-enter-scale: initial; - --tw-enter-rotate: initial; - --tw-enter-translate-x: initial; - --tw-enter-translate-y: initial; -} - -.data-\[state\=visible\]\:animate-in[data-state=visible] { - animation-name: enter; - animation-duration: 150ms; - --tw-enter-opacity: initial; - --tw-enter-scale: initial; - --tw-enter-rotate: initial; - --tw-enter-translate-x: initial; - --tw-enter-translate-y: initial; -} - -.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-] { - animation-name: exit; - animation-duration: 150ms; - --tw-exit-opacity: initial; - --tw-exit-scale: initial; - --tw-exit-rotate: initial; - --tw-exit-translate-x: initial; - --tw-exit-translate-y: initial; -} - -.data-\[state\=closed\]\:animate-out[data-state=closed] { - animation-name: exit; - animation-duration: 150ms; - --tw-exit-opacity: initial; - --tw-exit-scale: initial; - --tw-exit-rotate: initial; - --tw-exit-translate-x: initial; - --tw-exit-translate-y: initial; -} - -.data-\[state\=hidden\]\:animate-out[data-state=hidden] { - animation-name: exit; - animation-duration: 150ms; - --tw-exit-opacity: initial; - --tw-exit-scale: initial; - --tw-exit-rotate: initial; - --tw-exit-translate-x: initial; - --tw-exit-translate-y: initial; -} - -.data-\[swipe\=end\]\:animate-out[data-swipe=end] { - animation-name: exit; - animation-duration: 150ms; - --tw-exit-opacity: initial; - --tw-exit-scale: initial; - --tw-exit-rotate: initial; - --tw-exit-translate-x: initial; - --tw-exit-translate-y: initial; -} - -.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-] { - --tw-enter-opacity: 0; -} - -.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-] { - --tw-exit-opacity: 0; -} - -.data-\[state\=closed\]\:fade-out-0[data-state=closed] { - --tw-exit-opacity: 0; -} - -.data-\[state\=closed\]\:fade-out-80[data-state=closed] { - --tw-exit-opacity: 0.8; -} - -.data-\[state\=hidden\]\:fade-out[data-state=hidden] { - --tw-exit-opacity: 0; -} - -.data-\[state\=open\]\:fade-in-0[data-state=open] { - --tw-enter-opacity: 0; -} - -.data-\[state\=visible\]\:fade-in[data-state=visible] { - --tw-enter-opacity: 0; -} - -.data-\[state\=closed\]\:zoom-out-95[data-state=closed] { - --tw-exit-scale: .95; -} - -.data-\[state\=open\]\:zoom-in-90[data-state=open] { - --tw-enter-scale: .9; -} - -.data-\[state\=open\]\:zoom-in-95[data-state=open] { - --tw-enter-scale: .95; -} - -.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end] { - --tw-enter-translate-x: 13rem; -} - -.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start] { - --tw-enter-translate-x: -13rem; -} - -.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end] { - --tw-exit-translate-x: 13rem; -} - -.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start] { - --tw-exit-translate-x: -13rem; -} - -.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom] { - --tw-enter-translate-y: -0.5rem; -} - -.data-\[side\=left\]\:slide-in-from-right-2[data-side=left] { - --tw-enter-translate-x: 0.5rem; -} - -.data-\[side\=right\]\:slide-in-from-left-2[data-side=right] { - --tw-enter-translate-x: -0.5rem; -} - -.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top] { - --tw-enter-translate-y: 0.5rem; -} - -.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed] { - --tw-exit-translate-y: 100%; -} - -.data-\[state\=closed\]\:slide-out-to-left[data-state=closed] { - --tw-exit-translate-x: -100%; -} - -.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed] { - --tw-exit-translate-x: -50%; -} - -.data-\[state\=closed\]\:slide-out-to-right[data-state=closed] { - --tw-exit-translate-x: 100%; -} - -.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed] { - --tw-exit-translate-x: 100%; -} - -.data-\[state\=closed\]\:slide-out-to-top[data-state=closed] { - --tw-exit-translate-y: -100%; -} - -.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed] { - --tw-exit-translate-y: -48%; -} - -.data-\[state\=open\]\:slide-in-from-bottom[data-state=open] { - --tw-enter-translate-y: 100%; -} - -.data-\[state\=open\]\:slide-in-from-left[data-state=open] { - --tw-enter-translate-x: -100%; -} - -.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open] { - --tw-enter-translate-x: -50%; -} - -.data-\[state\=open\]\:slide-in-from-right[data-state=open] { - --tw-enter-translate-x: 100%; -} - -.data-\[state\=open\]\:slide-in-from-top[data-state=open] { - --tw-enter-translate-y: -100%; -} - -.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open] { - --tw-enter-translate-y: -48%; -} - -.data-\[state\=open\]\:slide-in-from-top-full[data-state=open] { - --tw-enter-translate-y: -100%; -} - -.data-\[state\=closed\]\:duration-300[data-state=closed] { - animation-duration: 300ms; -} - -.data-\[state\=open\]\:duration-500[data-state=open] { - animation-duration: 500ms; -} - -.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]::after { - content: var(--tw-content); - left: 0px; -} - -.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]::after { - content: var(--tw-content); - height: 0.25rem; -} - -.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]::after { - content: var(--tw-content); - width: 100%; -} - -.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]::after { - content: var(--tw-content); - --tw-translate-y: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]::after { - content: var(--tw-content); - --tw-translate-x: 0px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open] { - background-color: hsl(var(--accent)); -} - -.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state=open] { - background-color: hsl(var(--sidebar-accent)); -} - -.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state=open] { - color: hsl(var(--sidebar-accent-foreground)); -} - -.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open] { - background-color: hsl(var(--accent)); -} - -.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\] { - left: calc(var(--sidebar-width) * -1); -} - -.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\] { - right: calc(var(--sidebar-width) * -1); -} - -.group[data-side=left] .group-data-\[side\=left\]\:-right-4 { - right: -1rem; -} - -.group[data-side=right] .group-data-\[side\=right\]\:left-0 { - left: 0px; -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8 { - margin-top: -2rem; -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden { - display: none; -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\] { - width: var(--sidebar-width-icon); -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\] { - width: calc(var(--sidebar-width-icon) + 1rem); -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\] { - width: calc(var(--sidebar-width-icon) + 1rem +2px); -} - -.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0 { - width: 0px; -} - -.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0 { - --tw-translate-x: 0px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.group[data-side=right] .group-data-\[side\=right\]\:rotate-180 { - --tw-rotate: 180deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.group[data-state=open] .group-data-\[state\=open\]\:rotate-180 { - --tw-rotate: 180deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden { - overflow: hidden; -} - -.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg { - border-radius: var(--radius); -} - -.group[data-variant=floating] .group-data-\[variant\=floating\]\:border { - border-width: 1px; -} - -.group[data-side=left] .group-data-\[side\=left\]\:border-r { - border-right-width: 1px; -} - -.group[data-side=right] .group-data-\[side\=right\]\:border-l { - border-left-width: 1px; -} - -.group[data-variant=floating] .group-data-\[variant\=floating\]\:border-sidebar-border { - border-color: hsl(var(--sidebar-border)); -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-0 { - padding: 0px !important; -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-2 { - padding: 0.5rem !important; -} - -.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0 { - opacity: 0; -} - -.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full::after { - content: var(--tw-content); - left: 100%; -} - -.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:hover { - background-color: hsl(var(--sidebar-background)); -} - -.peer\/menu-button[data-size=default] ~ .peer-data-\[size\=default\]\/menu-button\:top-1\.5 { - top: 0.375rem; -} - -.peer\/menu-button[data-size=lg] ~ .peer-data-\[size\=lg\]\/menu-button\:top-2\.5 { - top: 0.625rem; -} - -.peer\/menu-button[data-size=sm] ~ .peer-data-\[size\=sm\]\/menu-button\:top-1 { - top: 0.25rem; -} - -.peer\/menu-button[data-active=true] ~ .peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground { - color: hsl(var(--sidebar-accent-foreground)); -} - -@supports ((-webkit-backdrop-filter: var(--tw)) or (backdrop-filter: var(--tw))) { - .supports-\[backdrop-filter\]\:bg-background\/60 { - background-color: hsl(var(--background) / 0.6); - } -} - -:is(.dark .dark\:border-destructive) { - border-color: hsl(var(--destructive)); -} - -:is(.dark .dark\:bg-primary\/10) { - background-color: hsl(var(--primary) / 0.1); -} - -:is(.dark .dark\:text-primary-foreground) { - color: hsl(var(--primary-foreground)); -} - -@media (min-width: 640px) { - .sm\:bottom-0 { - bottom: 0px; - } - - .sm\:right-0 { - right: 0px; - } - - .sm\:top-auto { - top: auto; - } - - .sm\:mt-0 { - margin-top: 0px; - } - - .sm\:flex { - display: flex; - } - - .sm\:max-w-sm { - max-width: 24rem; - } - - .sm\:flex-row { - flex-direction: row; - } - - .sm\:flex-col { - flex-direction: column; - } - - .sm\:justify-end { - justify-content: flex-end; - } - - .sm\:gap-2 { - gap: 0.5rem; - } - - .sm\:gap-2\.5 { - gap: 0.625rem; - } - - .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); - } - - .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); - } - - .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0px * var(--tw-space-y-reverse)); - } - - .sm\:rounded-lg { - border-radius: var(--radius); - } - - .sm\:text-left { - text-align: left; - } - - .data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open] { - --tw-enter-translate-y: 100%; - } -} - -@media (min-width: 768px) { - .md\:absolute { - position: absolute; - } - - .md\:block { - display: block; - } - - .md\:flex { - display: flex; - } - - .md\:w-1\/4 { - width: 25%; - } - - .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] { - width: var(--radix-navigation-menu-viewport-width); - } - - .md\:w-auto { - width: auto; - } - - .md\:max-w-\[420px\] { - max-width: 420px; - } - - .md\:max-w-\[75\%\] { - max-width: 75%; - } - - .md\:grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - - .md\:grid-cols-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .md\:flex-row { - flex-direction: row; - } - - .md\:text-sm { - font-size: 0.875rem; - line-height: 1.25rem; - } - - .md\:opacity-0 { - opacity: 0; - } - - .after\:md\:hidden::after { - content: var(--tw-content); - display: none; - } - - .peer[data-variant=inset] ~ .md\:peer-data-\[variant\=inset\]\:m-2 { - margin: 0.5rem; - } - - .peer[data-state=collapsed][data-variant=inset] ~ .md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2 { - margin-left: 0.5rem; - } - - .peer[data-variant=inset] ~ .md\:peer-data-\[variant\=inset\]\:ml-0 { - margin-left: 0px; - } - - .peer[data-variant=inset] ~ .md\:peer-data-\[variant\=inset\]\:rounded-xl { - border-radius: 0.75rem; - } - - .peer[data-variant=inset] ~ .md\:peer-data-\[variant\=inset\]\:shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); - } -} - -@media (min-width: 1024px) { - .lg\:grid-cols-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .lg\:grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } -} - -.\[\&\+div\]\:text-xs+div { - font-size: 0.75rem; - line-height: 1rem; -} - -.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end) { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start) { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]) { - border-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]) { - background-color: hsl(var(--accent)); -} - -.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:has([aria-selected]):first-child { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:has([aria-selected]):last-child { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\.day-outside\)\]\:bg-accent\/50:has([aria-selected].day-outside) { - background-color: hsl(var(--accent) / 0.5); -} - -.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end) { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) { - padding-right: 0px; -} - -.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox] { - --tw-translate-y: 2px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\>button\]\:hidden>button { - display: none; -} - -.\[\&\>span\:last-child\]\:truncate>span:last-child { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.\[\&\>span\]\:line-clamp-1>span { - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; -} - -.\[\&\>span\]\:flex>span { - display: flex; -} - -.\[\&\>span\]\:w-auto>span { - width: auto; -} - -.\[\&\>span\]\:w-full>span { - width: 100%; -} - -.\[\&\>span\]\:items-center>span { - align-items: center; -} - -.\[\&\>span\]\:gap-1>span { - gap: 0.25rem; -} - -.\[\&\>span\]\:truncate>span { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div { - --tw-translate-y: -3px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\>svg\]\:absolute>svg { - position: absolute; -} - -.\[\&\>svg\]\:left-4>svg { - left: 1rem; -} - -.\[\&\>svg\]\:top-4>svg { - top: 1rem; -} - -.\[\&\>svg\]\:hidden>svg { - display: none; -} - -.\[\&\>svg\]\:h-2\.5>svg { - height: 0.625rem; -} - -.\[\&\>svg\]\:h-3>svg { - height: 0.75rem; -} - -.\[\&\>svg\]\:h-3\.5>svg { - height: 0.875rem; -} - -.\[\&\>svg\]\:w-2\.5>svg { - width: 0.625rem; -} - -.\[\&\>svg\]\:w-3>svg { - width: 0.75rem; -} - -.\[\&\>svg\]\:w-3\.5>svg { - width: 0.875rem; -} - -.\[\&\>svg\]\:shrink-0>svg { - flex-shrink: 0; -} - -.\[\&\>svg\]\:text-destructive>svg { - color: hsl(var(--destructive)); -} - -.\[\&\>svg\]\:text-foreground>svg { - color: hsl(var(--foreground)); -} - -.\[\&\>svg\]\:text-muted-foreground>svg { - color: hsl(var(--muted-foreground)); -} - -.\[\&\>svg\]\:text-sidebar-accent-foreground>svg { - color: hsl(var(--sidebar-accent-foreground)); -} - -.\[\&\>svg\~\*\]\:pl-7>svg~* { - padding-left: 1.75rem; -} - -.\[\&\>tr\]\:last\:border-b-0:last-child>tr { - border-bottom-width: 0px; -} - -.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div { - --tw-rotate: 90deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg { - --tw-rotate: 180deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text { - fill: hsl(var(--muted-foreground)); -} - -.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke='#ccc'] { - stroke: hsl(var(--border) / 0.5); -} - -.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor { - stroke: hsl(var(--border)); -} - -.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke='#fff'] { - stroke: transparent; -} - -.\[\&_\.recharts-layer\]\:outline-none .recharts-layer { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke='#ccc'] { - stroke: hsl(var(--border)); -} - -.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector { - fill: hsl(var(--muted)); -} - -.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor { - fill: hsl(var(--muted)); -} - -.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke='#ccc'] { - stroke: hsl(var(--border)); -} - -.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke='#fff'] { - stroke: transparent; -} - -.\[\&_\.recharts-sector\]\:outline-none .recharts-sector { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.\[\&_\.recharts-surface\]\:outline-none .recharts-surface { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] { - padding-top: 0.375rem; - padding-bottom: 0.375rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] { - font-size: 0.75rem; - line-height: 1rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] { - font-weight: 500; -} - -.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading] { - color: hsl(var(--muted-foreground)); -} - -.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] { - padding-top: 0px; -} - -.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg { - height: 1.25rem; -} - -.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg { - width: 1.25rem; -} - -.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] { - height: 3rem; -} - -.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg { - height: 1.25rem; -} - -.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg { - width: 1.25rem; -} - -.\[\&_p\]\:leading-relaxed p { - line-height: 1.625; -} - -.\[\&_svg\]\:pointer-events-none svg { - pointer-events: none; -} - -.\[\&_svg\]\:h-4 svg { - height: 1rem; -} - -.\[\&_svg\]\:w-4 svg { - width: 1rem; -} - -.\[\&_svg\]\:shrink-0 svg { - flex-shrink: 0; -} - -.\[\&_svg\]\:text-foreground svg { - color: hsl(var(--foreground)); -} - -.\[\&_tr\:last-child\]\:border-0 tr:last-child { - border-width: 0px; -} - -.\[\&_tr\]\:border-b tr { - border-bottom-width: 1px; -} - -[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2 { - right: -0.5rem; -} - -[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize { - cursor: e-resize; -} - -[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize { - cursor: w-resize; -} - -[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2 { - left: -0.5rem; -} - -[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize { - cursor: w-resize; -} - -[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize { - cursor: e-resize; -} - diff --git a/public/sounds/click.mp3 b/public/sounds/click.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/click.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/error.mp3 b/public/sounds/error.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/error.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/hover.mp3 b/public/sounds/hover.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/hover.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/manifest.ts b/public/sounds/manifest.ts deleted file mode 100644 index b98ef7fee..000000000 --- a/public/sounds/manifest.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const soundAssets = { - send: '/assets/sounds/send.mp3', - receive: '/assets/sounds/receive.mp3', - typing: '/assets/sounds/typing.mp3', - notification: '/assets/sounds/notification.mp3', - click: '/assets/sounds/click.mp3', - hover: '/assets/sounds/hover.mp3', - success: '/assets/sounds/success.mp3', - error: '/assets/sounds/error.mp3' -} as const; - -// Type for sound names -export type SoundName = keyof typeof soundAssets; diff --git a/public/sounds/notification.mp3 b/public/sounds/notification.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/notification.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/receive.mp3 b/public/sounds/receive.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/receive.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/send.mp3 b/public/sounds/send.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/send.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/success.mp3 b/public/sounds/success.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/success.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/sounds/typing.mp3 b/public/sounds/typing.mp3 deleted file mode 100644 index 5a9b52fcf..000000000 --- a/public/sounds/typing.mp3 +++ /dev/null @@ -1,46 +0,0 @@ - - - - Example Domain - - - - - - - - -
-

Example Domain

-

This domain is for use in illustrative examples in documents. You may use this - domain in literature without prior coordination or asking for permission.

-

More information...

-
- - diff --git a/public/styles/output.css b/public/styles/output.css deleted file mode 100644 index cd05315b6..000000000 --- a/public/styles/output.css +++ /dev/null @@ -1,2801 +0,0 @@ -/* -! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -*/ - -html { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - 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"; - /* 4 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font family by default. -2. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -[type='button'], -[type='reset'], -[type='submit'] { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* -Removes the default spacing and border for appropriate elements. -*/ - -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; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -*, ::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 / 0.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 / 0.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: ; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .container { - max-width: 1536px; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.pointer-events-none { - pointer-events: none; -} - -.pointer-events-auto { - pointer-events: auto; -} - -.visible { - visibility: visible; -} - -.\!visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.inset-0 { - top: 0px; - right: 0px; - bottom: 0px; - left: 0px; -} - -.inset-x-0 { - left: 0px; - right: 0px; -} - -.inset-y-0 { - top: 0px; - bottom: 0px; -} - -.left-\[50\%\] { - left: 50%; -} - -.top-\[50\%\] { - top: 50%; -} - -.left-1 { - left: 0.25rem; -} - -.right-1 { - right: 0.25rem; -} - -.left-2 { - left: 0.5rem; -} - -.right-4 { - right: 1rem; -} - -.top-4 { - top: 1rem; -} - -.top-\[1px\] { - top: 1px; -} - -.left-0 { - left: 0px; -} - -.top-0 { - top: 0px; -} - -.top-full { - top: 100%; -} - -.top-\[60\%\] { - top: 60%; -} - -.right-2 { - right: 0.5rem; -} - -.bottom-0 { - bottom: 0px; -} - -.right-0 { - right: 0px; -} - -.top-1 { - top: 0.25rem; -} - -.left-2\.5 { - left: 0.625rem; -} - -.top-2\.5 { - top: 0.625rem; -} - -.top-2 { - top: 0.5rem; -} - -.z-50 { - z-index: 50; -} - -.z-10 { - z-index: 10; -} - -.z-\[1\] { - z-index: 1; -} - -.z-\[100\] { - z-index: 100; -} - -.z-0 { - z-index: 0; -} - -.m-0 { - margin: 0px; -} - -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; -} - -.-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; -} - -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -.mt-1 { - margin-top: 0.25rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-6 { - margin-bottom: 1.5rem; -} - -.mb-1 { - margin-bottom: 0.25rem; -} - -.mb-8 { - margin-bottom: 2rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mr-2 { - margin-right: 0.5rem; -} - -.ml-auto { - margin-left: auto; -} - -.ml-1 { - margin-left: 0.25rem; -} - -.mt-1\.5 { - margin-top: 0.375rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.mt-auto { - margin-top: auto; -} - -.mb-2 { - margin-bottom: 0.5rem; -} - -.mb-3 { - margin-bottom: 0.75rem; -} - -.ml-3 { - margin-left: 0.75rem; -} - -.mr-4 { - margin-right: 1rem; -} - -.ml-4 { - margin-left: 1rem; -} - -.mb-5 { - margin-bottom: 1.25rem; -} - -.block { - display: block; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.grid { - display: grid; -} - -.hidden { - display: none; -} - -.aspect-square { - aspect-ratio: 1 / 1; -} - -.aspect-\[3\/4\] { - aspect-ratio: 3/4; -} - -.h-16 { - height: 4rem; -} - -.h-screen { - height: 100vh; -} - -.h-\[calc\(100vh-80px\)\] { - height: calc(100vh - 80px); -} - -.h-4 { - height: 1rem; -} - -.h-10 { - height: 2.5rem; -} - -.h-full { - height: 100%; -} - -.h-9 { - height: 2.25rem; -} - -.h-8 { - height: 2rem; -} - -.h-7 { - height: 1.75rem; -} - -.h-px { - height: 1px; -} - -.h-3\.5 { - height: 0.875rem; -} - -.h-3 { - height: 0.75rem; -} - -.h-2 { - height: 0.5rem; -} - -.h-\[var\(--radix-navigation-menu-viewport-height\)\] { - height: var(--radix-navigation-menu-viewport-height); -} - -.h-1\.5 { - height: 0.375rem; -} - -.h-1 { - height: 0.25rem; -} - -.h-2\.5 { - height: 0.625rem; -} - -.h-\[var\(--radix-select-trigger-height\)\] { - height: var(--radix-select-trigger-height); -} - -.h-\[1px\] { - height: 1px; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-\[52px\] { - height: 52px; -} - -.max-h-\[300px\] { - max-height: 300px; -} - -.max-h-\[--radix-context-menu-content-available-height\] { - max-height: --radix-context-menu-content-available-height; -} - -.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\] { - max-height: var(--radix-dropdown-menu-content-available-height); -} - -.max-h-\[--radix-select-content-available-height\] { - max-height: --radix-select-content-available-height; -} - -.max-h-screen { - max-height: 100vh; -} - -.max-h-\[800px\] { - max-height: 800px; -} - -.max-h-72 { - max-height: 18rem; -} - -.min-h-screen { - min-height: 100vh; -} - -.min-h-\[60px\] { - min-height: 60px; -} - -.w-full { - width: 100%; -} - -.w-64 { - width: 16rem; -} - -.w-4 { - width: 1rem; -} - -.w-10 { - width: 2.5rem; -} - -.w-9 { - width: 2.25rem; -} - -.w-7 { - width: 1.75rem; -} - -.w-8 { - width: 2rem; -} - -.w-3\.5 { - width: 0.875rem; -} - -.w-3 { - width: 0.75rem; -} - -.w-2 { - width: 0.5rem; -} - -.w-max { - width: -moz-max-content; - width: max-content; -} - -.w-72 { - width: 18rem; -} - -.w-px { - width: 1px; -} - -.w-2\.5 { - width: 0.625rem; -} - -.w-\[1px\] { - width: 1px; -} - -.w-3\/4 { - width: 75%; -} - -.w-56 { - width: 14rem; -} - -.w-48 { - width: 12rem; -} - -.w-\[535px\] { - width: 535px; -} - -.min-w-\[8rem\] { - min-width: 8rem; -} - -.min-w-\[12rem\] { - min-width: 12rem; -} - -.min-w-\[var\(--radix-select-trigger-width\)\] { - min-width: var(--radix-select-trigger-width); -} - -.min-w-\[250px\] { - min-width: 250px; -} - -.min-w-\[50px\] { - min-width: 50px; -} - -.min-w-full { - min-width: 100%; -} - -.max-w-lg { - max-width: 32rem; -} - -.max-w-max { - max-width: -moz-max-content; - max-width: max-content; -} - -.max-w-md { - max-width: 28rem; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-shrink-0 { - flex-shrink: 0; -} - -.shrink-0 { - flex-shrink: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.grow { - flex-grow: 1; -} - -.border-collapse { - border-collapse: collapse; -} - -.origin-\[--radix-context-menu-content-transform-origin\] { - transform-origin: --radix-context-menu-content-transform-origin; -} - -.origin-\[--radix-dropdown-menu-content-transform-origin\] { - transform-origin: --radix-dropdown-menu-content-transform-origin; -} - -.origin-\[--radix-hover-card-content-transform-origin\] { - transform-origin: --radix-hover-card-content-transform-origin; -} - -.origin-\[--radix-menubar-content-transform-origin\] { - transform-origin: --radix-menubar-content-transform-origin; -} - -.origin-\[--radix-popover-content-transform-origin\] { - transform-origin: --radix-popover-content-transform-origin; -} - -.origin-\[--radix-select-content-transform-origin\] { - transform-origin: --radix-select-content-transform-origin; -} - -.origin-\[--radix-tooltip-content-transform-origin\] { - transform-origin: --radix-tooltip-content-transform-origin; -} - -.origin-top-right { - transform-origin: top right; -} - -.translate-x-\[-50\%\] { - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.translate-y-\[-50\%\] { - --tw-translate-y: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.rotate-45 { - --tw-rotate: 45deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -@keyframes pulse { - 50% { - opacity: .5; - } -} - -.animate-pulse { - animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; -} - -.cursor-default { - cursor: default; -} - -.cursor-pointer { - cursor: pointer; -} - -.touch-none { - touch-action: none; -} - -.select-none { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.list-none { - list-style-type: none; -} - -.flex-col { - flex-direction: column; -} - -.flex-col-reverse { - flex-direction: column-reverse; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.items-start { - align-items: flex-start; -} - -.items-end { - align-items: flex-end; -} - -.items-center { - align-items: center; -} - -.items-stretch { - align-items: stretch; -} - -.justify-start { - justify-content: flex-start; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.justify-around { - justify-content: space-around; -} - -.gap-4 { - gap: 1rem; -} - -.gap-6 { - gap: 1.5rem; -} - -.gap-2 { - gap: 0.5rem; -} - -.gap-1 { - gap: 0.25rem; -} - -.gap-3 { - gap: 0.75rem; -} - -.space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); -} - -.space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-6 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); -} - -.space-y-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); -} - -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); -} - -.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)); -} - -.space-x-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.75rem * var(--tw-space-x-reverse)); - margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); -} - -.-space-x-px > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(-1px * var(--tw-space-x-reverse)); - margin-left: calc(-1px * calc(1 - var(--tw-space-x-reverse))); -} - -.divide-y > :not([hidden]) ~ :not([hidden]) { - --tw-divide-y-reverse: 0; - border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); -} - -.divide-gray-200 > :not([hidden]) ~ :not([hidden]) { - --tw-divide-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-divide-opacity)); -} - -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-x-auto { - overflow-x: auto; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.whitespace-nowrap { - white-space: nowrap; -} - -.whitespace-pre-wrap { - white-space: pre-wrap; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-lg { - border-radius: var(--radius); -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-md { - border-radius: calc(var(--radius) - 2px); -} - -.rounded-xl { - border-radius: 0.75rem; -} - -.rounded-sm { - border-radius: calc(var(--radius) - 4px); -} - -.rounded-\[inherit\] { - border-radius: inherit; -} - -.rounded-l-md { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.rounded-r-md { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.rounded-tl-sm { - border-top-left-radius: calc(var(--radius) - 4px); -} - -.border { - border-width: 1px; -} - -.border-2 { - border-width: 2px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-r { - border-right-width: 1px; -} - -.border-l { - border-left-width: 1px; -} - -.border-gray-200 { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity)); -} - -.border-red-500 { - --tw-border-opacity: 1; - border-color: rgb(239 68 68 / var(--tw-border-opacity)); -} - -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)); -} - -.border-destructive\/50 { - border-color: hsl(var(--destructive) / 0.5); -} - -.border-transparent { - border-color: transparent; -} - -.border-input { - border-color: hsl(var(--input)); -} - -.border-primary { - border-color: hsl(var(--primary)); -} - -.border-primary\/50 { - border-color: hsl(var(--primary) / 0.5); -} - -.border-destructive { - border-color: hsl(var(--destructive)); -} - -.border-l-transparent { - border-left-color: transparent; -} - -.border-t-transparent { - border-top-color: transparent; -} - -.bg-gray-50 { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); -} - -.bg-blue-500 { - --tw-bg-opacity: 1; - background-color: rgb(59 130 246 / var(--tw-bg-opacity)); -} - -.bg-black\/80 { - background-color: rgb(0 0 0 / 0.8); -} - -.bg-background { - background-color: hsl(var(--background)); -} - -.bg-muted { - background-color: hsl(var(--muted)); -} - -.bg-primary { - background-color: hsl(var(--primary)); -} - -.bg-secondary { - background-color: hsl(var(--secondary)); -} - -.bg-destructive { - background-color: hsl(var(--destructive)); -} - -.bg-transparent { - background-color: transparent; -} - -.bg-accent { - background-color: hsl(var(--accent)); -} - -.bg-card { - background-color: hsl(var(--card)); -} - -.bg-popover { - background-color: hsl(var(--popover)); -} - -.bg-border { - background-color: hsl(var(--border)); -} - -.bg-primary\/20 { - background-color: hsl(var(--primary) / 0.2); -} - -.bg-primary\/10 { - background-color: hsl(var(--primary) / 0.1); -} - -.bg-muted\/50 { - background-color: hsl(var(--muted) / 0.5); -} - -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); -} - -.bg-black { - --tw-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--tw-bg-opacity)); -} - -.bg-green-500 { - --tw-bg-opacity: 1; - background-color: rgb(34 197 94 / var(--tw-bg-opacity)); -} - -.bg-blue-600 { - --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); -} - -.bg-background\/95 { - background-color: hsl(var(--background) / 0.95); -} - -.bg-gray-100 { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.bg-opacity-50 { - --tw-bg-opacity: 0.5; -} - -.fill-current { - fill: currentColor; -} - -.fill-primary { - fill: hsl(var(--primary)); -} - -.object-cover { - -o-object-fit: cover; - object-fit: cover; -} - -.p-4 { - padding: 1rem; -} - -.p-6 { - padding: 1.5rem; -} - -.p-5 { - padding: 1.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-0 { - padding: 0px; -} - -.p-1 { - padding: 0.25rem; -} - -.p-\[1px\] { - padding: 1px; -} - -.p-8 { - padding: 2rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.px-2\.5 { - padding-left: 0.625rem; - padding-right: 0.625rem; -} - -.py-0\.5 { - padding-top: 0.125rem; - padding-bottom: 0.125rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.py-0 { - padding-top: 0px; - padding-bottom: 0px; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - -.py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} - -.py-1\.5 { - padding-top: 0.375rem; - padding-bottom: 0.375rem; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.px-1\.5 { - padding-left: 0.375rem; - padding-right: 0.375rem; -} - -.px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - -.pt-0 { - padding-top: 0px; -} - -.pt-1 { - padding-top: 0.25rem; -} - -.pl-8 { - padding-left: 2rem; -} - -.pr-2 { - padding-right: 0.5rem; -} - -.pl-2 { - padding-left: 0.5rem; -} - -.pr-8 { - padding-right: 2rem; -} - -.pr-6 { - padding-right: 1.5rem; -} - -.pr-4 { - padding-right: 1rem; -} - -.pl-4 { - padding-left: 1rem; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.align-middle { - vertical-align: middle; -} - -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - -.text-\[0\.8rem\] { - font-size: 0.8rem; -} - -.text-base { - font-size: 1rem; - line-height: 1.5rem; -} - -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.font-bold { - font-weight: 700; -} - -.font-medium { - font-weight: 500; -} - -.font-semibold { - font-weight: 600; -} - -.font-normal { - font-weight: 400; -} - -.uppercase { - text-transform: uppercase; -} - -.leading-none { - line-height: 1; -} - -.tracking-tight { - letter-spacing: -0.025em; -} - -.tracking-widest { - letter-spacing: 0.1em; -} - -.tracking-wider { - letter-spacing: 0.05em; -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.text-red-500 { - --tw-text-opacity: 1; - color: rgb(239 68 68 / var(--tw-text-opacity)); -} - -.text-gray-900 { - --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity)); -} - -.text-muted-foreground { - color: hsl(var(--muted-foreground)); -} - -.text-foreground { - color: hsl(var(--foreground)); -} - -.text-destructive { - color: hsl(var(--destructive)); -} - -.text-primary-foreground { - color: hsl(var(--primary-foreground)); -} - -.text-secondary-foreground { - color: hsl(var(--secondary-foreground)); -} - -.text-destructive-foreground { - color: hsl(var(--destructive-foreground)); -} - -.text-primary { - color: hsl(var(--primary)); -} - -.text-accent-foreground { - color: hsl(var(--accent-foreground)); -} - -.text-card-foreground { - color: hsl(var(--card-foreground)); -} - -.text-current { - color: currentColor; -} - -.text-popover-foreground { - color: hsl(var(--popover-foreground)); -} - -.text-foreground\/50 { - color: hsl(var(--foreground) / 0.5); -} - -.text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); -} - -.text-zinc-600 { - --tw-text-opacity: 1; - color: rgb(82 82 91 / var(--tw-text-opacity)); -} - -.text-background { - color: hsl(var(--background)); -} - -.text-blue-600 { - --tw-text-opacity: 1; - color: rgb(37 99 235 / var(--tw-text-opacity)); -} - -.text-blue-500 { - --tw-text-opacity: 1; - color: rgb(59 130 246 / var(--tw-text-opacity)); -} - -.text-gray-700 { - --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); -} - -.underline-offset-4 { - text-underline-offset: 4px; -} - -.opacity-50 { - opacity: 0.5; -} - -.opacity-70 { - opacity: 0.7; -} - -.opacity-60 { - opacity: 0.6; -} - -.opacity-0 { - opacity: 0; -} - -.opacity-90 { - opacity: 0.9; -} - -.shadow-lg { - --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 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 { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px 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 / 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); -} - -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.outline-none { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.outline { - outline-style: solid; -} - -.ring-0 { - --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(0px + 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-1 { - --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, 0 0 #0000); -} - -.ring-black { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity)); -} - -.ring-opacity-5 { - --tw-ring-opacity: 0.05; -} - -.ring-offset-background { - --tw-ring-offset-color: hsl(var(--background)); -} - -.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); -} - -.backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-filter { - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.transition-all { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-transform { - transition-property: transform; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-colors { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-opacity { - transition-property: opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.duration-200 { - transition-duration: 200ms; -} - -.duration-300 { - transition-duration: 300ms; -} - -.ease-in-out { - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -@keyframes enter { - from { - opacity: var(--tw-enter-opacity, 1); - transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0)); - } -} - -@keyframes exit { - to { - opacity: var(--tw-exit-opacity, 1); - transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0)); - } -} - -.animate-in { - animation-name: enter; - animation-duration: 150ms; - --tw-enter-opacity: initial; - --tw-enter-scale: initial; - --tw-enter-rotate: initial; - --tw-enter-translate-x: initial; - --tw-enter-translate-y: initial; -} - -.fade-in-0 { - --tw-enter-opacity: 0; -} - -.zoom-in-95 { - --tw-enter-scale: .95; -} - -.duration-200 { - animation-duration: 200ms; -} - -.duration-300 { - animation-duration: 300ms; -} - -.ease-in-out { - animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -.file\:border-0::file-selector-button { - border-width: 0px; -} - -.file\:bg-transparent::file-selector-button { - background-color: transparent; -} - -.file\:text-sm::file-selector-button { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.file\:font-medium::file-selector-button { - font-weight: 500; -} - -.file\:text-foreground::file-selector-button { - color: hsl(var(--foreground)); -} - -.placeholder\:text-muted-foreground::-moz-placeholder { - color: hsl(var(--muted-foreground)); -} - -.placeholder\:text-muted-foreground::placeholder { - color: hsl(var(--muted-foreground)); -} - -.after\:absolute::after { - content: var(--tw-content); - position: absolute; -} - -.after\:inset-y-0::after { - content: var(--tw-content); - top: 0px; - bottom: 0px; -} - -.after\:left-1\/2::after { - content: var(--tw-content); - left: 50%; -} - -.after\:w-1::after { - content: var(--tw-content); - width: 0.25rem; -} - -.after\:-translate-x-1\/2::after { - content: var(--tw-content); - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.focus-within\:relative:focus-within { - position: relative; -} - -.focus-within\:z-20:focus-within { - z-index: 20; -} - -.hover\:scale-105:hover { - --tw-scale-x: 1.05; - --tw-scale-y: 1.05; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.hover\:bg-blue-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); -} - -.hover\:bg-primary\/80:hover { - background-color: hsl(var(--primary) / 0.8); -} - -.hover\:bg-secondary\/80:hover { - background-color: hsl(var(--secondary) / 0.8); -} - -.hover\:bg-destructive\/80:hover { - background-color: hsl(var(--destructive) / 0.8); -} - -.hover\:bg-primary\/90:hover { - background-color: hsl(var(--primary) / 0.9); -} - -.hover\:bg-destructive\/90:hover { - background-color: hsl(var(--destructive) / 0.9); -} - -.hover\:bg-accent:hover { - background-color: hsl(var(--accent)); -} - -.hover\:bg-primary:hover { - background-color: hsl(var(--primary)); -} - -.hover\:bg-muted\/50:hover { - background-color: hsl(var(--muted) / 0.5); -} - -.hover\:bg-secondary:hover { - background-color: hsl(var(--secondary)); -} - -.hover\:bg-muted:hover { - background-color: hsl(var(--muted)); -} - -.hover\:bg-gray-100:hover { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.hover\:bg-green-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(22 163 74 / var(--tw-bg-opacity)); -} - -.hover\:bg-gray-50:hover { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.hover\:bg-blue-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(29 78 216 / var(--tw-bg-opacity)); -} - -.hover\:text-accent-foreground:hover { - color: hsl(var(--accent-foreground)); -} - -.hover\:text-primary-foreground:hover { - color: hsl(var(--primary-foreground)); -} - -.hover\:text-foreground:hover { - color: hsl(var(--foreground)); -} - -.hover\:text-muted-foreground:hover { - color: hsl(var(--muted-foreground)); -} - -.hover\:text-primary:hover { - color: hsl(var(--primary)); -} - -.hover\:text-blue-700:hover { - --tw-text-opacity: 1; - color: rgb(29 78 216 / var(--tw-text-opacity)); -} - -.hover\:underline:hover { - text-decoration-line: underline; -} - -.hover\:opacity-100:hover { - opacity: 1; -} - -.focus\:border-indigo-300:focus { - --tw-border-opacity: 1; - border-color: rgb(165 180 252 / var(--tw-border-opacity)); -} - -.focus\:border-indigo-500:focus { - --tw-border-opacity: 1; - border-color: rgb(99 102 241 / var(--tw-border-opacity)); -} - -.focus\:bg-primary:focus { - background-color: hsl(var(--primary)); -} - -.focus\:bg-accent:focus { - background-color: hsl(var(--accent)); -} - -.focus\:text-primary-foreground:focus { - color: hsl(var(--primary-foreground)); -} - -.focus\:text-accent-foreground:focus { - color: hsl(var(--accent-foreground)); -} - -.focus\:opacity-100:focus { - opacity: 1; -} - -.focus\:outline-none:focus { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus\:ring-2:focus { - --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, 0 0 #0000); -} - -.focus\:ring-1:focus { - --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, 0 0 #0000); -} - -.focus\:ring:focus { - --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(3px + 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); -} - -.focus\:ring-ring:focus { - --tw-ring-color: hsl(var(--ring)); -} - -.focus\:ring-blue-500:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity)); -} - -.focus\:ring-indigo-200:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(199 210 254 / var(--tw-ring-opacity)); -} - -.focus\:ring-indigo-500:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity)); -} - -.focus\:ring-opacity-50:focus { - --tw-ring-opacity: 0.5; -} - -.focus\:ring-offset-2:focus { - --tw-ring-offset-width: 2px; -} - -.focus-visible\:outline-none:focus-visible { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus-visible\:ring-1:focus-visible { - --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, 0 0 #0000); -} - -.focus-visible\:ring-2:focus-visible { - --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, 0 0 #0000); -} - -.focus-visible\:ring-ring:focus-visible { - --tw-ring-color: hsl(var(--ring)); -} - -.focus-visible\:ring-offset-1:focus-visible { - --tw-ring-offset-width: 1px; -} - -.focus-visible\:ring-offset-2:focus-visible { - --tw-ring-offset-width: 2px; -} - -.focus-visible\:ring-offset-background:focus-visible { - --tw-ring-offset-color: hsl(var(--background)); -} - -.disabled\:pointer-events-none:disabled { - pointer-events: none; -} - -.disabled\:cursor-not-allowed:disabled { - cursor: not-allowed; -} - -.disabled\:opacity-50:disabled { - opacity: 0.5; -} - -.group:hover .group-hover\:opacity-100 { - opacity: 1; -} - -.peer:disabled ~ .peer-disabled\:cursor-not-allowed { - cursor: not-allowed; -} - -.peer:disabled ~ .peer-disabled\:opacity-70 { - opacity: 0.7; -} - -.dark .dark\:block { - display: block; -} - -.dark .dark\:hidden { - display: none; -} - -.dark .dark\:border-destructive { - border-color: hsl(var(--destructive)); -} - -.dark .dark\:bg-muted { - background-color: hsl(var(--muted)); -} - -.dark .dark\:text-zinc-200 { - --tw-text-opacity: 1; - color: rgb(228 228 231 / var(--tw-text-opacity)); -} - -.dark .dark\:text-muted-foreground { - color: hsl(var(--muted-foreground)); -} - -.dark .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.dark .dark\:hover\:bg-muted:hover { - background-color: hsl(var(--muted)); -} - -.dark .dark\:hover\:text-white:hover { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -@media (min-width: 640px) { - .sm\:bottom-0 { - bottom: 0px; - } - - .sm\:right-0 { - right: 0px; - } - - .sm\:top-auto { - top: auto; - } - - .sm\:mt-0 { - margin-top: 0px; - } - - .sm\:flex { - display: flex; - } - - .sm\:hidden { - display: none; - } - - .sm\:max-w-sm { - max-width: 24rem; - } - - .sm\:flex-1 { - flex: 1 1 0%; - } - - .sm\:flex-row { - flex-direction: row; - } - - .sm\:flex-col { - flex-direction: column; - } - - .sm\:items-center { - align-items: center; - } - - .sm\:justify-end { - justify-content: flex-end; - } - - .sm\:justify-between { - justify-content: space-between; - } - - .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); - } - - .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); - } - - .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0px * var(--tw-space-y-reverse)); - } - - .sm\:rounded-lg { - border-radius: var(--radius); - } - - .sm\:text-left { - text-align: left; - } -} - -@media (min-width: 768px) { - .md\:absolute { - position: absolute; - } - - .md\:flex { - display: flex; - } - - .md\:hidden { - display: none; - } - - .md\:w-1\/4 { - width: 25%; - } - - .md\:w-auto { - width: auto; - } - - .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] { - width: var(--radix-navigation-menu-viewport-width); - } - - .md\:max-w-\[420px\] { - max-width: 420px; - } - - .md\:grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - - .md\:flex-row { - flex-direction: row; - } - - .md\:text-sm { - font-size: 0.875rem; - line-height: 1.25rem; - } -} - -@media (min-width: 1024px) { - .lg\:grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } -} - -.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg { - --tw-rotate: 180deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div { - --tw-translate-y: -3px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\>svg\]\:absolute>svg { - position: absolute; -} - -.\[\&\>svg\]\:left-4>svg { - left: 1rem; -} - -.\[\&\>svg\]\:top-4>svg { - top: 1rem; -} - -.\[\&\>svg\]\:hidden>svg { - display: none; -} - -.\[\&\>svg\]\:shrink-0>svg { - flex-shrink: 0; -} - -.\[\&\>svg\]\:text-foreground>svg { - color: hsl(var(--foreground)); -} - -.\[\&\>svg\]\:text-destructive>svg { - color: hsl(var(--destructive)); -} - -.\[\&\>svg\~\*\]\:pl-7>svg~* { - padding-left: 1.75rem; -} - -.\[\&_p\]\:leading-relaxed p { - line-height: 1.625; -} - -.\[\&_svg\]\:pointer-events-none svg { - pointer-events: none; -} - -.\[\&_svg\]\:h-4 svg { - height: 1rem; -} - -.\[\&_svg\]\:w-4 svg { - width: 1rem; -} - -.\[\&_svg\]\:shrink-0 svg { - flex-shrink: 0; -} - -.\[\&_svg\]\:text-foreground svg { - color: hsl(var(--foreground)); -} - -.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]) { - border-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]) { - background-color: hsl(var(--accent)); -} - -.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:has([aria-selected]):first-child { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:has([aria-selected]):last-child { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\.day-outside\)\]\:bg-accent\/50:has([aria-selected].day-outside) { - background-color: hsl(var(--accent) / 0.5); -} - -.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end) { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end) { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start) { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] { - padding-top: 0.375rem; - padding-bottom: 0.375rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] { - font-size: 0.75rem; - line-height: 1rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] { - font-weight: 500; -} - -.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading] { - color: hsl(var(--muted-foreground)); -} - -.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] { - padding-top: 0px; -} - -.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg { - height: 1.25rem; -} - -.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg { - width: 1.25rem; -} - -.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] { - height: 3rem; -} - -.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg { - height: 1.25rem; -} - -.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg { - width: 1.25rem; -} - -.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div { - --tw-rotate: 90deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&_tr\]\:border-b tr { - border-bottom-width: 1px; -} - -.\[\&_tr\:last-child\]\:border-0 tr:last-child { - border-width: 0px; -} - -.\[\&\>tr\]\:last\:border-b-0:last-child>tr { - border-bottom-width: 0px; -} - -.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) { - padding-right: 0px; -} - -.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox] { - --tw-translate-y: 2px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\+div\]\:text-xs+div { - font-size: 0.75rem; - line-height: 1rem; -} - -.\[\&\>span\]\:flex>span { - display: flex; -} - -.\[\&\>span\]\:w-full>span { - width: 100%; -} - -.\[\&\>span\]\:w-auto>span { - width: auto; -} - -.\[\&\>span\]\:items-center>span { - align-items: center; -} - -.\[\&\>span\]\:gap-1>span { - gap: 0.25rem; -} - -.\[\&\>span\]\:truncate>span { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} diff --git a/public/themes/3dbevel.css b/public/themes/3dbevel.css deleted file mode 100644 index 68093914d..000000000 --- a/public/themes/3dbevel.css +++ /dev/null @@ -1,66 +0,0 @@ -body, .card, .popover, .input, .button, .menu, .dialog { - font-family: 'IBM Plex Mono', 'Courier New', monospace !important; - background: #c0c0c0 !important; - color: #000 !important; - border-radius: 0 !important; - box-shadow: none !important; -} - -.card, .popover, .menu, .dialog { - border: 2px solid #fff !important; - border-bottom: 2px solid #404040 !important; - border-right: 2px solid #404040 !important; - padding: 8px !important; - background: #e0e0e0 !important; -} - -.button, button, input[type="button"], input[type="submit"] { - background: #e0e0e0 !important; - color: #000 !important; - border: 2px solid #fff !important; - border-bottom: 2px solid #404040 !important; - border-right: 2px solid #404040 !important; - padding: 4px 12px !important; - font-weight: bold !important; - box-shadow: none !important; - outline: none !important; -} - -input, textarea, select { - background: #fff !important; - color: #000 !important; - border: 2px solid #fff !important; - border-bottom: 2px solid #404040 !important; - border-right: 2px solid #404040 !important; - font-family: inherit !important; - box-shadow: none !important; -} - -.menu { - background: #d0d0d0 !important; - border: 2px solid #fff !important; - border-bottom: 2px solid #404040 !important; - border-right: 2px solid #404040 !important; -} - -::-webkit-scrollbar { - width: 16px !important; - background: #c0c0c0 !important; -} -::-webkit-scrollbar-thumb { - background: #404040 !important; - border: 2px solid #fff !important; - border-bottom: 2px solid #404040 !important; - border-right: 2px solid #404040 !important; -} - -a { - color: #0000aa !important; - text-decoration: underline !important; -} - -hr { - border: none !important; - border-top: 2px solid #404040 !important; - margin: 8px 0 !important; -} diff --git a/public/themes/arcadeflash.css b/public/themes/arcadeflash.css deleted file mode 100644 index 5c79b0a2a..000000000 --- a/public/themes/arcadeflash.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* ArcadeFlash Theme */ - --background: 0 0% 5%; - --foreground: 0 0% 98%; - --card: 0 0% 8%; - --card-foreground: 0 0% 98%; - --popover: 0 0% 5%; - --popover-foreground: 0 0% 98%; - --primary: 120 100% 50%; - --primary-foreground: 0 0% 5%; - --secondary: 0 0% 15%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 10%; - --muted-foreground: 0 0% 60%; - --accent: 240 100% 50%; - --accent-foreground: 0 0% 98%; - --destructive: 0 100% 50%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 15%; - --input: 0 0% 15%; - --ring: 120 100% 50%; - --radius: 0.5rem; - --chart-1: 120 100% 50%; - --chart-2: 240 100% 50%; - --chart-3: 60 100% 50%; - --chart-4: 0 100% 50%; - --chart-5: 300 100% 50%; -} diff --git a/public/themes/cyberpunk.css b/public/themes/cyberpunk.css deleted file mode 100644 index 3c7a959f4..000000000 --- a/public/themes/cyberpunk.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* CyberPunk Theme */ - --background: 240 30% 5%; - --foreground: 60 100% 80%; - --card: 240 30% 8%; - --card-foreground: 60 100% 80%; - --popover: 240 30% 5%; - --popover-foreground: 60 100% 80%; - --primary: 330 100% 60%; - --primary-foreground: 240 30% 5%; - --secondary: 240 30% 15%; - --secondary-foreground: 60 100% 80%; - --muted: 240 30% 10%; - --muted-foreground: 60 100% 60%; - --accent: 180 100% 60%; - --accent-foreground: 240 30% 5%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 240 30% 15%; - --input: 240 30% 15%; - --ring: 330 100% 60%; - --radius: 0.5rem; - --chart-1: 330 100% 60%; - --chart-2: 180 100% 60%; - --chart-3: 60 100% 60%; - --chart-4: 0 100% 60%; - --chart-5: 270 100% 60%; -} diff --git a/public/themes/discofever.css b/public/themes/discofever.css deleted file mode 100644 index d5e06d9bd..000000000 --- a/public/themes/discofever.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* DiscoFever Theme */ - --background: 270 20% 10%; - --foreground: 0 0% 98%; - --card: 270 20% 15%; - --card-foreground: 0 0% 98%; - --popover: 270 20% 10%; - --popover-foreground: 0 0% 98%; - --primary: 330 100% 60%; - --primary-foreground: 0 0% 98%; - --secondary: 270 20% 20%; - --secondary-foreground: 0 0% 98%; - --muted: 270 20% 25%; - --muted-foreground: 270 10% 60%; - --accent: 60 100% 60%; - --accent-foreground: 270 20% 10%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 270 20% 20%; - --input: 270 20% 20%; - --ring: 330 100% 60%; - --radius: 0.5rem; - --chart-1: 330 100% 60%; - --chart-2: 60 100% 60%; - --chart-3: 120 100% 60%; - --chart-4: 240 100% 60%; - --chart-5: 0 100% 60%; -} diff --git a/public/themes/grungeera.css b/public/themes/grungeera.css deleted file mode 100644 index 140e7d5c6..000000000 --- a/public/themes/grungeera.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* GrungeEra Theme */ - --background: 30 10% 10%; - --foreground: 30 30% 80%; - --card: 30 10% 15%; - --card-foreground: 30 30% 80%; - --popover: 30 10% 10%; - --popover-foreground: 30 30% 80%; - --primary: 10 70% 50%; - --primary-foreground: 30 30% 80%; - --secondary: 30 10% 20%; - --secondary-foreground: 30 30% 80%; - --muted: 30 10% 25%; - --muted-foreground: 30 30% 60%; - --accent: 200 70% 50%; - --accent-foreground: 30 30% 80%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 30 10% 20%; - --input: 30 10% 20%; - --ring: 10 70% 50%; - --radius: 0.5rem; - --chart-1: 10 70% 50%; - --chart-2: 200 70% 50%; - --chart-3: 90 70% 50%; - --chart-4: 300 70% 50%; - --chart-5: 30 70% 50%; -} diff --git a/public/themes/jazzage.css b/public/themes/jazzage.css deleted file mode 100644 index fe6857ba1..000000000 --- a/public/themes/jazzage.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* JazzAge Theme */ - --background: 30 20% 10%; - --foreground: 40 30% 85%; - --card: 30 20% 15%; - --card-foreground: 40 30% 85%; - --popover: 30 20% 10%; - --popover-foreground: 40 30% 85%; - --primary: 20 80% 50%; - --primary-foreground: 40 30% 85%; - --secondary: 30 20% 20%; - --secondary-foreground: 40 30% 85%; - --muted: 30 20% 25%; - --muted-foreground: 40 30% 60%; - --accent: 200 80% 50%; - --accent-foreground: 40 30% 85%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 30 20% 20%; - --input: 30 20% 20%; - --ring: 20 80% 50%; - --radius: 0.5rem; - --chart-1: 20 80% 50%; - --chart-2: 200 80% 50%; - --chart-3: 350 80% 50%; - --chart-4: 140 80% 50%; - --chart-5: 260 80% 50%; -} diff --git a/public/themes/mellowgold.css b/public/themes/mellowgold.css deleted file mode 100644 index 25346354b..000000000 --- a/public/themes/mellowgold.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* MellowGold Theme */ - --background: 45 30% 90%; - --foreground: 30 20% 20%; - --card: 45 30% 85%; - --card-foreground: 30 20% 20%; - --popover: 45 30% 90%; - --popover-foreground: 30 20% 20%; - --primary: 35 80% 50%; - --primary-foreground: 45 30% 90%; - --secondary: 45 30% 80%; - --secondary-foreground: 30 20% 20%; - --muted: 45 30% 75%; - --muted-foreground: 30 20% 40%; - --accent: 25 80% 50%; - --accent-foreground: 45 30% 90%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 45 30% 80%; - --input: 45 30% 80%; - --ring: 35 80% 50%; - --radius: 0.5rem; - --chart-1: 35 80% 50%; - --chart-2: 25 80% 50%; - --chart-3: 15 80% 50%; - --chart-4: 5 80% 50%; - --chart-5: 55 80% 50%; -} diff --git a/public/themes/midcenturymod.css b/public/themes/midcenturymod.css deleted file mode 100644 index a56dcd4a7..000000000 --- a/public/themes/midcenturymod.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* MidCenturyMod Theme */ - --background: 40 30% 95%; - --foreground: 30 20% 20%; - --card: 40 30% 90%; - --card-foreground: 30 20% 20%; - --popover: 40 30% 95%; - --popover-foreground: 30 20% 20%; - --primary: 180 60% 40%; - --primary-foreground: 40 30% 95%; - --secondary: 40 30% 85%; - --secondary-foreground: 30 20% 20%; - --muted: 40 30% 80%; - --muted-foreground: 30 20% 40%; - --accent: 350 60% 40%; - --accent-foreground: 40 30% 95%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 40 30% 85%; - --input: 40 30% 85%; - --ring: 180 60% 40%; - --radius: 0.5rem; - --chart-1: 180 60% 40%; - --chart-2: 350 60% 40%; - --chart-3: 40 60% 40%; - --chart-4: 220 60% 40%; - --chart-5: 300 60% 40%; -} diff --git a/public/themes/orange.css b/public/themes/orange.css deleted file mode 100644 index d7fc3030d..000000000 --- a/public/themes/orange.css +++ /dev/null @@ -1,27 +0,0 @@ -:root { - --background: 0 0% 100%; /* White */ - --foreground: 0 0% 13%; /* #212121 - near black */ - --card: 0 0% 98%; /* #faf9f8 - light gray */ - --card-foreground: 0 0% 13%; /* #212121 */ - --popover: 0 0% 100%; /* White */ - --popover-foreground: 0 0% 13%; /* #212121 */ - --primary: 24 90% 54%; /* #d83b01 - Office orange */ - --primary-foreground: 0 0% 100%; /* White */ - --secondary: 210 36% 96%; /* #f3f2f1 - light blue-gray */ - --secondary-foreground: 0 0% 13%; /* #212121 */ - --muted: 0 0% 90%; /* #e1dfdd - muted gray */ - --muted-foreground: 0 0% 40%; /* #666666 */ - --accent: 207 90% 54%; /* #0078d4 - Office blue */ - --accent-foreground: 0 0% 100%; /* White */ - --destructive: 0 85% 60%; /* #e81123 - Office red */ - --destructive-foreground: 0 0% 100%; /* White */ - --border: 0 0% 85%; /* #d2d0ce - light border */ - --input: 0 0% 100%; /* White */ - --ring: 207 90% 54%; /* #0078d4 */ - --radius: 0.25rem; /* Slightly less rounded */ - --chart-1: 24 90% 54%; /* Office orange */ - --chart-2: 207 90% 54%; /* Office blue */ - --chart-3: 120 60% 40%; /* Office green */ - --chart-4: 340 82% 52%; /* Office magenta */ - --chart-5: 44 100% 50%; /* Office yellow */ -} diff --git a/public/themes/polaroidmemories.css b/public/themes/polaroidmemories.css deleted file mode 100644 index 88cbe311e..000000000 --- a/public/themes/polaroidmemories.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* PolaroidMemories Theme */ - --background: 50 30% 95%; - --foreground: 30 20% 20%; - --card: 50 30% 90%; - --card-foreground: 30 20% 20%; - --popover: 50 30% 95%; - --popover-foreground: 30 20% 20%; - --primary: 200 80% 50%; - --primary-foreground: 50 30% 95%; - --secondary: 50 30% 85%; - --secondary-foreground: 30 20% 20%; - --muted: 50 30% 80%; - --muted-foreground: 30 20% 40%; - --accent: 350 80% 50%; - --accent-foreground: 50 30% 95%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 50 30% 85%; - --input: 50 30% 85%; - --ring: 200 80% 50%; - --radius: 0.5rem; - --chart-1: 200 80% 50%; - --chart-2: 350 80% 50%; - --chart-3: 50 80% 50%; - --chart-4: 140 80% 50%; - --chart-5: 260 80% 50%; -} diff --git a/public/themes/retrowave.css b/public/themes/retrowave.css deleted file mode 100644 index 529746bdd..000000000 --- a/public/themes/retrowave.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* RetroWave Theme */ - --background: 240 21% 15%; - --foreground: 0 0% 98%; - --card: 240 21% 18%; - --card-foreground: 0 0% 98%; - --popover: 240 21% 15%; - --popover-foreground: 0 0% 98%; - --primary: 334 89% 62%; - --primary-foreground: 0 0% 100%; - --secondary: 240 21% 25%; - --secondary-foreground: 0 0% 98%; - --muted: 240 21% 20%; - --muted-foreground: 240 5% 65%; - --accent: 41 99% 60%; - --accent-foreground: 240 21% 15%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 240 21% 25%; - --input: 240 21% 25%; - --ring: 334 89% 62%; - --radius: 0.5rem; - --chart-1: 334 89% 62%; - --chart-2: 41 99% 60%; - --chart-3: 190 90% 50%; - --chart-4: 280 89% 65%; - --chart-5: 80 75% 55%; -} diff --git a/public/themes/saturdaycartoons.css b/public/themes/saturdaycartoons.css deleted file mode 100644 index 054f1f545..000000000 --- a/public/themes/saturdaycartoons.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* SaturdayCartoons Theme */ - --background: 220 50% 95%; - --foreground: 220 50% 20%; - --card: 220 50% 90%; - --card-foreground: 220 50% 20%; - --popover: 220 50% 95%; - --popover-foreground: 220 50% 20%; - --primary: 30 100% 55%; - --primary-foreground: 220 50% 95%; - --secondary: 220 50% 85%; - --secondary-foreground: 220 50% 20%; - --muted: 220 50% 80%; - --muted-foreground: 220 50% 40%; - --accent: 120 100% 55%; - --accent-foreground: 220 50% 95%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 220 50% 85%; - --input: 220 50% 85%; - --ring: 30 100% 55%; - --radius: 0.5rem; - --chart-1: 30 100% 55%; - --chart-2: 120 100% 55%; - --chart-3: 240 100% 55%; - --chart-4: 330 100% 55%; - --chart-5: 60 100% 55%; -} diff --git a/public/themes/seasidepostcard.css b/public/themes/seasidepostcard.css deleted file mode 100644 index 208415ba4..000000000 --- a/public/themes/seasidepostcard.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* SeasidePostcard Theme */ - --background: 200 50% 95%; - --foreground: 200 50% 20%; - --card: 200 50% 90%; - --card-foreground: 200 50% 20%; - --popover: 200 50% 95%; - --popover-foreground: 200 50% 20%; - --primary: 30 100% 55%; - --primary-foreground: 200 50% 95%; - --secondary: 200 50% 85%; - --secondary-foreground: 200 50% 20%; - --muted: 200 50% 80%; - --muted-foreground: 200 50% 40%; - --accent: 350 100% 55%; - --accent-foreground: 200 50% 95%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 200 50% 85%; - --input: 200 50% 85%; - --ring: 30 100% 55%; - --radius: 0.5rem; - --chart-1: 30 100% 55%; - --chart-2: 350 100% 55%; - --chart-3: 200 100% 55%; - --chart-4: 140 100% 55%; - --chart-5: 260 100% 55%; -} diff --git a/public/themes/typewriter.css b/public/themes/typewriter.css deleted file mode 100644 index 9efbc47bb..000000000 --- a/public/themes/typewriter.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* Typewriter Theme */ - --background: 0 0% 95%; - --foreground: 0 0% 10%; - --card: 0 0% 90%; - --card-foreground: 0 0% 10%; - --popover: 0 0% 95%; - --popover-foreground: 0 0% 10%; - --primary: 0 0% 20%; - --primary-foreground: 0 0% 95%; - --secondary: 0 0% 85%; - --secondary-foreground: 0 0% 10%; - --muted: 0 0% 80%; - --muted-foreground: 0 0% 40%; - --accent: 0 0% 70%; - --accent-foreground: 0 0% 10%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 85%; - --input: 0 0% 85%; - --ring: 0 0% 20%; - --radius: 0.5rem; - --chart-1: 0 0% 20%; - --chart-2: 0 0% 40%; - --chart-3: 0 0% 60%; - --chart-4: 0 0% 30%; - --chart-5: 0 0% 50%; -} diff --git a/public/themes/vapordream.css b/public/themes/vapordream.css deleted file mode 100644 index 07fdb79db..000000000 --- a/public/themes/vapordream.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* VaporDream Theme */ - --background: 260 20% 10%; - --foreground: 0 0% 98%; - --card: 260 20% 13%; - --card-foreground: 0 0% 98%; - --popover: 260 20% 10%; - --popover-foreground: 0 0% 98%; - --primary: 300 100% 70%; - --primary-foreground: 260 20% 10%; - --secondary: 260 20% 20%; - --secondary-foreground: 0 0% 98%; - --muted: 260 20% 15%; - --muted-foreground: 260 10% 60%; - --accent: 200 100% 70%; - --accent-foreground: 260 20% 10%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 260 20% 20%; - --input: 260 20% 20%; - --ring: 300 100% 70%; - --radius: 0.5rem; - --chart-1: 300 100% 70%; - --chart-2: 200 100% 70%; - --chart-3: 50 100% 60%; - --chart-4: 330 100% 70%; - --chart-5: 150 100% 60%; -} diff --git a/public/themes/xeroxui.css b/public/themes/xeroxui.css deleted file mode 100644 index ef174c2d1..000000000 --- a/public/themes/xeroxui.css +++ /dev/null @@ -1,71 +0,0 @@ -:root { - /* Windows 3.1 White & Blue Theme */ - --background: 0 0% 100%; /* Pure white */ - --foreground: 0 0% 0%; /* Black text */ - --card: 0 0% 98%; /* Slightly off-white for cards */ - --card-foreground: 0 0% 0%; /* Black text */ - --popover: 0 0% 100%; /* White */ - --popover-foreground: 0 0% 0%; /* Black */ - --primary: 240 100% 27%; /* Windows blue */ - --primary-foreground: 0 0% 100%; /* White text on blue */ - --secondary: 0 0% 90%; /* Light gray for secondary */ - --secondary-foreground: 0 0% 0%; /* Black text */ - --muted: 0 0% 85%; /* Muted gray */ - --muted-foreground: 240 10% 40%; /* Muted blue-gray */ - --accent: 60 100% 50%; /* Classic yellow accent */ - --accent-foreground: 240 100% 27%; /* Blue */ - --destructive: 0 100% 50%; /* Red for destructive */ - --destructive-foreground: 0 0% 100%; /* White */ - --border: 240 100% 27%; /* Blue borders */ - --input: 0 0% 100%; /* White input */ - --ring: 240 100% 27%; /* Blue ring/focus */ - --radius: 0.125rem; /* Small radius, almost square */ - --chart-1: 240 100% 27%; /* Blue */ - --chart-2: 0 0% 60%; /* Gray */ - --chart-3: 60 100% 50%; /* Yellow */ - --chart-4: 0 100% 50%; /* Red */ - --chart-5: 120 100% 25%; /* Green */ - --border-light: 0 0% 100%; /* White for top/left border */ - --border-dark: 240 100% 20%; /* Dark blue for bottom/right border */ -} - -/* Windows 3.11 style border */ -.win311-border { - border-top: 2px solid hsl(var(--border-light)); - border-left: 2px solid hsl(var(--border-light)); - border-bottom: 2px solid hsl(var(--border-dark)); - border-right: 2px solid hsl(var(--border-dark)); - background: hsl(var(--background)); -} - -/* Titles */ -.win311-title { - color: hsl(var(--primary)); - border-bottom: 2px solid hsl(var(--primary)); - font-weight: bold; - padding: 0.25em 0.5em; - background: hsl(var(--background)); -} - -/* General text */ -body, .filemanager, .filemanager * { - color: hsl(var(--foreground)); - background: hsl(var(--background)); -} - -button, .win311-button { - font-family: inherit; - font-size: 1em; - padding: 0.25em 1.5em; - background: #c0c0c0; /* classic light gray */ - color: #000; - border-top: 2px solid #fff; /* light bevel */ - border-left: 2px solid #fff; /* light bevel */ - border-bottom: 2px solid #808080;/* dark bevel */ - border-right: 2px solid #808080; /* dark bevel */ - border-radius: 0; - box-shadow: inset 1px 1px 0 #fff, inset -1px -1px 0 #808080 !important; - outline: none !important; - cursor: pointer !important; - transition: none !important; -} diff --git a/public/themes/xtreegold.css b/public/themes/xtreegold.css deleted file mode 100644 index aa3d88914..000000000 --- a/public/themes/xtreegold.css +++ /dev/null @@ -1,228 +0,0 @@ -:root { - /* XTree Gold DOS File Manager Theme - Authentic 1980s Interface */ - - /* Core XTree Gold Palette - Exact Match */ - --background: 240 100% 16%; /* Classic XTree blue background */ - --foreground: 60 100% 88%; /* Bright yellow text */ - - /* Card Elements - File Panels */ - --card: 240 100% 16%; /* Same blue as main background */ - --card-foreground: 60 100% 88%; /* Bright yellow panel text */ - - /* Popover Elements - Context Menus */ - --popover: 240 100% 12%; /* Slightly darker blue for menus */ - --popover-foreground: 60 100% 90%; /* Bright yellow menu text */ - - /* Primary - XTree Gold Highlight (Cyan Selection) */ - --primary: 180 100% 70%; /* Bright cyan for selections */ - --primary-foreground: 240 100% 10%; /* Dark blue text on cyan */ - - /* Secondary - Directory Highlights */ - --secondary: 180 100% 50%; /* Pure cyan for directories */ - --secondary-foreground: 240 100% 10%; /* Dark blue on cyan */ - - /* Muted - Status Areas */ - --muted: 240 100% 14%; /* Slightly darker blue */ - --muted-foreground: 60 80% 75%; /* Dimmed yellow */ - - /* Accent - Function Keys & Highlights */ - --accent: 60 100% 50%; /* Pure yellow for F-keys */ - --accent-foreground: 240 100% 10%; /* Dark blue on yellow */ - - /* Destructive - Delete/Error */ - --destructive: 0 100% 60%; /* Bright red for warnings */ - --destructive-foreground: 60 90% 95%; /* Light yellow on red */ - - /* Interactive Elements */ - --border: 60 100% 70%; /* Yellow border lines */ - --input: 240 100% 14%; /* Dark blue input fields */ - --ring: 180 100% 70%; /* Cyan focus ring */ - - /* Border Radius - Sharp DOS aesthetic */ - --radius: 0rem; /* No rounding - pure DOS */ - - /* Chart Colors - Authentic DOS 16-color palette */ - --chart-1: 180 100% 70%; /* Bright cyan */ - --chart-2: 60 100% 50%; /* Yellow */ - --chart-3: 120 100% 50%; /* Green */ - --chart-4: 300 100% 50%; /* Magenta */ - --chart-5: 0 100% 60%; /* Red */ - - /* Authentic XTree Gold Colors */ - --xtree-blue: 240 100% 16%; /* Main background blue */ - --xtree-yellow: 60 100% 88%; /* Text yellow */ - --xtree-cyan: 180 100% 70%; /* Selection cyan */ - --xtree-white: 0 0% 100%; /* Pure white */ - --xtree-green: 120 100% 50%; /* DOS green */ - --xtree-magenta: 300 100% 50%; /* DOS magenta */ - --xtree-red: 0 100% 60%; /* DOS red */ - - /* File Type Colors - Authentic XTree */ - --executable-color: 0 0% 100%; /* White for executables */ - --directory-color: 180 100% 70%; /* Cyan for directories */ - --archive-color: 300 100% 50%; /* Magenta for archives */ - --text-color: 60 100% 88%; /* Yellow for text */ - --system-color: 0 100% 60%; /* Red for system files */ - - /* Menu Bar Colors */ - --menu-bar: 240 100% 8%; /* Dark blue menu bar */ - --menu-text: 60 100% 88%; /* Yellow menu text */ - --menu-highlight: 180 100% 50%; /* Cyan menu highlight */ -} - -/* Authentic XTree Gold Enhancement Classes */ -.xtree-main-panel { - background: hsl(var(--xtree-blue)); - color: hsl(var(--xtree-yellow)); - font-family: 'Perfect DOS VGA 437', 'Courier New', monospace; - font-size: 16px; - line-height: 1; - border: none; -} - -.xtree-menu-bar { - background: hsl(var(--menu-bar)); - color: hsl(var(--menu-text)); - padding: 0; - height: 20px; - display: flex; - align-items: center; - font-weight: normal; -} - -.xtree-menu-item { - padding: 0 8px; - color: hsl(var(--xtree-yellow)); - background: transparent; -} - -.xtree-menu-item:hover, -.xtree-menu-item.active { - background: hsl(var(--xtree-cyan)); - color: hsl(240 100% 10%); -} - -.xtree-dual-pane { - display: flex; - height: calc(100vh - 60px); -} - -.xtree-left-pane, -.xtree-right-pane { - flex: 1; - background: hsl(var(--xtree-blue)); - color: hsl(var(--xtree-yellow)); - padding: 0; - margin: 0; -} - -.xtree-directory-tree { - color: hsl(var(--directory-color)); - background: hsl(var(--xtree-blue)); - padding: 4px; -} - -.xtree-file-list { - background: hsl(var(--xtree-blue)); - color: hsl(var(--xtree-yellow)); - font-family: 'Perfect DOS VGA 437', 'Courier New', monospace; - font-size: 16px; - line-height: 20px; - padding: 4px; -} - -.xtree-file-selected { - background: hsl(var(--xtree-cyan)); - color: hsl(240 100% 10%); -} - -.xtree-directory { - color: hsl(var(--directory-color)); -} - -.xtree-executable { - color: hsl(var(--executable-color)); -} - -.xtree-archive { - color: hsl(var(--archive-color)); -} - -.xtree-text-file { - color: hsl(var(--text-color)); -} - -.xtree-system-file { - color: hsl(var(--system-color)); -} - -.xtree-status-line { - background: hsl(var(--xtree-blue)); - color: hsl(var(--xtree-yellow)); - height: 20px; - padding: 0 8px; - display: flex; - align-items: center; - font-size: 16px; -} - -.xtree-function-bar { - background: hsl(var(--menu-bar)); - color: hsl(var(--xtree-yellow)); - height: 20px; - display: flex; - padding: 0; - font-size: 14px; -} - -.xtree-function-key { - padding: 0 4px; - color: hsl(var(--xtree-yellow)); - border-right: 1px solid hsl(var(--xtree-yellow)); -} - -.xtree-function-key:last-child { - border-right: none; -} - -.xtree-path-bar { - background: hsl(var(--xtree-blue)); - color: hsl(var(--xtree-yellow)); - padding: 2px 8px; - border-bottom: 1px solid hsl(var(--xtree-yellow)); -} - -.xtree-disk-info { - background: hsl(var(--xtree-blue)); - color: hsl(var(--xtree-yellow)); - padding: 4px 8px; - text-align: right; - font-size: 14px; -} - -/* Authentic DOS Box Drawing Characters */ -.xtree-box-char { - font-family: 'Perfect DOS VGA 437', 'Courier New', monospace; - line-height: 1; - letter-spacing: 0; -} - -/* Classic Text Mode Cursor */ -.xtree-cursor { - background: hsl(var(--xtree-yellow)); - color: hsl(var(--xtree-blue)); - animation: blink 1s infinite; -} - -@keyframes blink { - 0%, 50% { opacity: 1; } - 51%, 100% { opacity: 0; } -} - -/* Authentic DOS Window Styling */ -.xtree-window { - border: 2px outset hsl(var(--xtree-blue)); - background: hsl(var(--xtree-blue)); - box-shadow: none; - border-radius: 0; -} \ No newline at end of file diff --git a/public/themes/y2kglow.css b/public/themes/y2kglow.css deleted file mode 100644 index 64dcaf064..000000000 --- a/public/themes/y2kglow.css +++ /dev/null @@ -1,28 +0,0 @@ -:root { - /* Y2KGlow Theme */ - --background: 240 10% 10%; - --foreground: 0 0% 98%; - --card: 240 10% 13%; - --card-foreground: 0 0% 98%; - --popover: 240 10% 10%; - --popover-foreground: 0 0% 98%; - --primary: 190 90% 50%; - --primary-foreground: 240 10% 10%; - --secondary: 240 10% 20%; - --secondary-foreground: 0 0% 98%; - --muted: 240 10% 15%; - --muted-foreground: 240 5% 60%; - --accent: 280 89% 65%; - --accent-foreground: 240 10% 10%; - --destructive: 0 85% 60%; - --destructive-foreground: 0 0% 98%; - --border: 240 10% 20%; - --input: 240 10% 20%; - --ring: 190 90% 50%; - --radius: 0.5rem; - --chart-1: 190 90% 50%; - --chart-2: 280 89% 65%; - --chart-3: 80 75% 55%; - --chart-4: 334 89% 62%; - --chart-5: 41 99% 60%; -} diff --git a/web/desktop/COMPONENTS.md b/web/desktop/COMPONENTS.md new file mode 100644 index 000000000..f525bdeca --- /dev/null +++ b/web/desktop/COMPONENTS.md @@ -0,0 +1,773 @@ +# General Bots Desktop - Component Guide + +## ๐ŸŽจ UI Components Overview + +This document provides a comprehensive guide to all UI components used in the General Bots Desktop application, including their structure, styling, and usage examples. + +--- + +## ๐Ÿ“ Layout Components + +### 1. Float Header + +The main navigation header with glass morphism effect. + +**Structure:** +```html + +``` + +**CSS Variables:** +- `--header-bg`: Background color with transparency +- `--header-border`: Border color +- `--header-height`: Height (default: 64px) + +**Styling:** +```css +.float-header { + background: var(--header-bg); + backdrop-filter: blur(20px) saturate(180%); + border-bottom: 1px solid var(--header-border); + box-shadow: var(--shadow-sm); +} +``` + +--- + +### 2. Logo Wrapper + +Clickable logo with hover effects. + +**Structure:** +```html + +``` + +**States:** +- Default: Glass background with subtle shadow +- Hover: Accent border, scale transform +- Active: Maintains hover state + +**CSS:** +```css +.logo-wrapper { + background: var(--glass-bg); + border: 1px solid var(--glass-border); + transition: all var(--transition-fast); +} + +.logo-wrapper:hover { + background: var(--bg-hover); + border-color: var(--accent-color); + transform: scale(1.02); +} +``` + +--- + +### 3. Main Content Area + +Container for dynamically loaded sections. + +**Structure:** +```html +
+
+
+ +
+
+
+``` + +**Behavior:** +- Only one section visible at a time +- Sections cached after first load +- Smooth fade transitions between sections + +--- + +## ๐ŸŽฏ Interactive Components + +### 4. Icon Button + +Circular button with icon (used for apps menu, theme toggle). + +**Structure:** +```html + +``` + +**Variants:** +- `.apps-button`: Apps menu trigger +- With hover lift effect +- With focus ring for accessibility + +**CSS:** +```css +.icon-button { + width: 40px; + height: 40px; + border-radius: var(--radius-full); + background: var(--glass-bg); + border: 1px solid var(--border-color); +} + +.icon-button:hover { + background: var(--bg-hover); + border-color: var(--accent-color); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} +``` + +--- + +### 5. Theme Dropdown + +Select element for theme switching. + +**Structure:** +```html + +``` + +**Features:** +- Auto-populated by ThemeManager +- Saves selection to localStorage +- Instant theme application +- Custom styled options + +**CSS:** +```css +.theme-dropdown { + padding: 8px 16px; + background: var(--glass-bg); + border: 1px solid var(--border-color); + border-radius: var(--radius-lg); + backdrop-filter: blur(10px); +} + +.theme-dropdown:focus { + border-color: var(--accent-color); + box-shadow: 0 0 0 3px var(--accent-light); +} +``` + +--- + +### 6. Apps Dropdown Menu + +Popup menu for application switching. + +**Structure:** +```html + +``` + +**States:** +- Hidden: `opacity: 0`, `pointer-events: none` +- Visible: `.show` class added +- Item hover: Background highlight +- Active item: Accent background and border + +**CSS:** +```css +.apps-dropdown { + position: absolute; + opacity: 0; + transform: translateY(-10px) scale(0.95); + transition: all var(--transition-smooth); +} + +.apps-dropdown.show { + opacity: 1; + transform: translateY(0) scale(1); + pointer-events: all; +} + +.app-item { + padding: var(--space-md); + border-radius: var(--radius-lg); + border: 1px solid transparent; +} + +.app-item:hover { + background: var(--bg-hover); + border-color: var(--border-color); + transform: translateY(-2px); +} + +.app-item.active { + background: var(--accent-light); + border-color: var(--accent-color); +} +``` + +--- + +### 7. User Avatar + +User profile button with gradient background. + +**Structure:** +```html + +``` + +**Features:** +- Gradient background (uses accent colors) +- Scale animation on hover +- Circular shape +- Customizable initial + +**CSS:** +```css +.user-avatar { + width: 40px; + height: 40px; + border-radius: var(--radius-full); + background: var(--accent-gradient); + color: white; + font-weight: 700; +} + +.user-avatar:hover { + transform: scale(1.1); + box-shadow: var(--shadow-md); +} +``` + +--- + +## ๐ŸŽด Content Components + +### 8. Glass Panel + +Container with glass morphism effect. + +**Usage:** +```html +
+ +
+``` + +**CSS:** +```css +.glass-panel { + background: var(--glass-bg); + backdrop-filter: blur(20px) saturate(180%); + border: 1px solid var(--glass-border); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); +} +``` + +**Use Cases:** +- Floating cards +- Overlays +- Modals +- Sidebars + +--- + +### 9. Card Component + +Standard card container for content. + +**Usage:** +```html +
+

Card Title

+

Card content...

+
+``` + +**CSS:** +```css +.card { + background: hsl(var(--card)); + color: hsl(var(--card-foreground)); + border: 1px solid var(--border-color); + border-radius: var(--radius-lg); + padding: var(--space-lg); + box-shadow: var(--shadow-sm); +} + +.card:hover { + box-shadow: var(--shadow-md); + border-color: var(--accent-color); +} +``` + +--- + +### 10. Loading Overlay + +Full-screen loading indicator. + +**Structure:** +```html +
+
+
+``` + +**States:** +- Visible: Default state on page load +- Hidden: `.hidden` class added after initialization + +**CSS:** +```css +.loading-overlay { + position: fixed; + inset: 0; + background: var(--primary-bg); + display: flex; + align-items: center; + justify-content: center; + z-index: var(--z-modal); +} + +.loading-overlay.hidden { + opacity: 0; + visibility: hidden; + pointer-events: none; +} + +.loading-spinner { + width: 48px; + height: 48px; + border: 4px solid var(--border-color); + border-top-color: var(--accent-color); + border-radius: var(--radius-full); + animation: spin 0.8s linear infinite; +} +``` + +--- + +### 11. Connection Status + +WebSocket connection indicator. + +**Structure:** +```html +
+ Disconnected +
+``` + +**States:** +- `.disconnected`: Red, visible +- `.connecting`: Yellow, visible +- `.connected`: Green, hidden (auto-fade) + +**CSS:** +```css +.connection-status { + position: fixed; + top: 72px; + left: 50%; + transform: translateX(-50%); + padding: 8px 16px; + border-radius: var(--radius-lg); + font-size: 13px; + font-weight: 500; + z-index: var(--z-fixed); + opacity: 0; +} + +.connection-status.disconnected { + background: var(--error-color); + color: white; + opacity: 1; +} + +.connection-status.connecting { + background: var(--warning-color); + color: white; + opacity: 1; +} + +.connection-status.connected { + background: var(--success-color); + color: white; + opacity: 0; /* Auto-hide when connected */ +} +``` + +--- + +## ๐Ÿ”˜ Button Components + +### 12. Primary Button + +Main action button with accent color. + +**Usage:** +```html + +``` + +**CSS:** +```css +.button-primary { + background: var(--accent-color); + color: hsl(var(--primary-foreground)); + border: none; + padding: 10px 20px; + border-radius: var(--radius-md); + font-weight: 600; + cursor: pointer; +} + +.button-primary:hover { + background: var(--accent-hover); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} +``` + +--- + +### 13. Secondary Button + +Alternative button style. + +**Usage:** +```html + +``` + +**CSS:** +```css +.button-secondary { + background: var(--secondary-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); + padding: 10px 20px; + border-radius: var(--radius-md); + font-weight: 600; +} + +.button-secondary:hover { + background: var(--bg-hover); + border-color: var(--accent-color); +} +``` + +--- + +## ๐Ÿ“ฑ Responsive Components + +### Mobile Adaptations + +**Breakpoints:** +```css +/* Mobile (โ‰ค480px) */ +@media (max-width: 480px) { + :root { + --header-height: 56px; + } + + .icon-button { + width: 36px; + height: 36px; + } + + .logo-text { + display: none; /* Hide on small screens */ + } +} + +/* Tablet (โ‰ค768px) */ +@media (max-width: 768px) { + .apps-dropdown { + width: calc(100vw - 32px); + max-width: 280px; + } +} +``` + +--- + +## ๐ŸŽญ Animation Utilities + +### Fade In + +```css +.fade-in { + animation: fadeIn var(--transition-smooth) ease-out; +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +``` + +### Slide In + +```css +.slide-in { + animation: slideIn var(--transition-smooth) ease-out; +} + +@keyframes slideIn { + from { + opacity: 0; + transform: translateX(-20px); + } + to { + opacity: 1; + transform: translateX(0); + } +} +``` + +### Spin (for loaders) + +```css +@keyframes spin { + to { + transform: rotate(360deg); + } +} +``` + +--- + +## โ™ฟ Accessibility Features + +### Focus Styles + +All interactive elements have visible focus indicators: + +```css +*:focus-visible { + outline: 2px solid var(--accent-color); + outline-offset: 2px; +} +``` + +### Screen Reader Text + +```css +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} +``` + +### ARIA Labels + +All interactive components include proper ARIA labels: + +```html + +``` + +--- + +## ๐Ÿ“Š Z-Index Layers + +Consistent z-index hierarchy: + +```css +:root { + --z-dropdown: 1000; /* Dropdowns */ + --z-sticky: 1020; /* Sticky header */ + --z-fixed: 1030; /* Fixed elements */ + --z-modal-backdrop: 1040; /* Modal backdrop */ + --z-modal: 1050; /* Modals */ + --z-popover: 1060; /* Popovers */ + --z-tooltip: 1070; /* Tooltips */ +} +``` + +--- + +## ๐ŸŽจ Color System + +### Theme Colors + +```css +/* Light backgrounds */ +--primary-bg: hsl(var(--background)); +--secondary-bg: hsl(var(--card)); + +/* Text colors */ +--text-primary: hsl(var(--foreground)); +--text-secondary: hsl(var(--muted-foreground)); + +/* Interactive colors */ +--accent-color: hsl(var(--primary)); +--accent-hover: hsl(var(--primary) / 0.9); +--accent-light: hsla(var(--primary) / 0.1); + +/* Status colors */ +--success-color: hsl(142 76% 36%); +--warning-color: hsl(38 92% 50%); +--error-color: hsl(var(--destructive)); +``` + +--- + +## ๐Ÿ“ Spacing System + +Consistent spacing scale: + +```css +:root { + --space-xs: 4px; + --space-sm: 8px; + --space-md: 16px; + --space-lg: 24px; + --space-xl: 32px; + --space-2xl: 48px; +} +``` + +**Usage:** +```css +.component { + padding: var(--space-md); + margin-bottom: var(--space-lg); + gap: var(--space-sm); +} +``` + +--- + +## ๐Ÿ”„ Border Radius + +Scalable border radius system: + +```css +:root { + --radius: 0.5rem; /* Base radius from theme */ + --radius-sm: calc(var(--radius) * 0.5); + --radius-md: var(--radius); + --radius-lg: calc(var(--radius) * 1.5); + --radius-xl: calc(var(--radius) * 2); + --radius-2xl: calc(var(--radius) * 3); + --radius-full: 9999px; +} +``` + +--- + +## ๐Ÿ–ผ๏ธ Shadow System + +Elevation through shadows: + +```css +:root { + --shadow-sm: 0 1px 2px 0 hsla(var(--foreground) / 0.05); + --shadow-md: 0 4px 6px -1px hsla(var(--foreground) / 0.1); + --shadow-lg: 0 10px 15px -3px hsla(var(--foreground) / 0.1); + --shadow-xl: 0 20px 25px -5px hsla(var(--foreground) / 0.1); +} +``` + +--- + +## ๐ŸŽฌ Transition System + +Consistent animation timing: + +```css +:root { + --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-smooth: 300ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-slow: 500ms cubic-bezier(0.4, 0, 0.2, 1); +} +``` + +**Usage:** +```css +.component { + transition: all var(--transition-smooth); +} +``` + +--- + +## ๐Ÿ“ Component Checklist + +When creating new components: + +- [ ] Use theme variables for all colors +- [ ] Include hover/focus/active states +- [ ] Add ARIA labels and roles +- [ ] Test keyboard navigation +- [ ] Ensure responsive behavior +- [ ] Use consistent spacing +- [ ] Apply appropriate z-index +- [ ] Add smooth transitions +- [ ] Test with all themes +- [ ] Verify accessibility + +--- + +## ๐Ÿ”— Related Documentation + +- [THEMES.md](THEMES.md) - Theme system details +- [README.md](README.md) - General documentation +- [MDN Web Docs](https://developer.mozilla.org) - Web standards reference + +--- + +**Component Library Version:** 1.0 +**Last Updated:** 2024 +**Maintained by:** General Bots Team \ No newline at end of file diff --git a/web/desktop/QUICKSTART.md b/web/desktop/QUICKSTART.md new file mode 100644 index 000000000..83c5b2c0a --- /dev/null +++ b/web/desktop/QUICKSTART.md @@ -0,0 +1,359 @@ +# Quick Start Guide - General Bots Desktop + +Get up and running with General Bots Desktop in 5 minutes! + +## ๐Ÿš€ Installation + +### Option 1: Using Python (Recommended) + +```bash +cd botserver/web/desktop +python3 -m http.server 8000 +``` + +Open http://localhost:8000 in your browser. + +### Option 2: Using Node.js + +```bash +cd botserver/web/desktop +npx http-server -p 8000 +``` + +### Option 3: Using PHP + +```bash +cd botserver/web/desktop +php -S localhost:8000 +``` + +## ๐Ÿ“‚ Project Structure at a Glance + +``` +desktop/ +โ”œโ”€โ”€ index.html # Main entry point +โ”œโ”€โ”€ css/app.css # Core styles + theme system +โ”œโ”€โ”€ js/ +โ”‚ โ”œโ”€โ”€ theme-manager.js # Theme switching +โ”‚ โ””โ”€โ”€ layout.js # Section loading +โ”œโ”€โ”€ public/themes/ # 19+ theme files +โ”œโ”€โ”€ chat/ # Chat module +โ”œโ”€โ”€ drive/ # Drive module +โ”œโ”€โ”€ tasks/ # Tasks module +โ””โ”€โ”€ mail/ # Mail module +``` + +## ๐ŸŽจ Try Different Themes + +1. Launch the application +2. Click the theme dropdown in the header +3. Select any theme (try "Cyberpunk" or "Retrowave"!) +4. Theme is saved automatically + +## โŒจ๏ธ Essential Keyboard Shortcuts + +- **Alt + 1** โ†’ Chat +- **Alt + 2** โ†’ Drive +- **Alt + 3** โ†’ Tasks +- **Alt + 4** โ†’ Mail +- **Esc** โ†’ Close menus + +## ๐Ÿ› ๏ธ Create Your First Theme + +### Step 1: Create Theme File + +Create `public/themes/myawesome.css`: + +```css +:root { + /* Base colors (HSL format: H S% L%) */ + --background: 230 35% 10%; /* Dark blue-gray */ + --foreground: 0 0% 95%; /* Light text */ + + /* Cards */ + --card: 230 35% 15%; + --card-foreground: 0 0% 95%; + + /* Primary accent (your brand color) */ + --primary: 280 90% 60%; /* Purple */ + --primary-foreground: 0 0% 100%; + + /* Secondary */ + --secondary: 230 35% 20%; + --secondary-foreground: 0 0% 95%; + + /* Muted elements */ + --muted: 230 35% 25%; + --muted-foreground: 230 15% 60%; + + /* Accent highlights */ + --accent: 340 90% 60%; /* Pink */ + --accent-foreground: 0 0% 100%; + + /* Error states */ + --destructive: 0 85% 60%; + --destructive-foreground: 0 0% 98%; + + /* Borders and inputs */ + --border: 230 35% 20%; + --input: 230 35% 20%; + --ring: 280 90% 60%; + + /* Border radius */ + --radius: 0.5rem; + + /* Charts */ + --chart-1: 280 90% 60%; + --chart-2: 340 90% 60%; + --chart-3: 200 90% 60%; + --chart-4: 140 90% 60%; + --chart-5: 40 90% 60%; +} +``` + +### Step 2: Register Your Theme + +Edit `js/theme-manager.js`, add to the `themes` array: + +```javascript +{ id: "myawesome", name: "โœจ My Awesome", file: "myawesome.css" } +``` + +### Step 3: Test It! + +1. Reload the application +2. Open theme dropdown +3. Select "โœจ My Awesome" +4. Enjoy your custom theme! + +## ๐Ÿงฉ Add a New Module + +### Step 1: Create Module Files + +Create directory: `mymodule/` + +**mymodule/mymodule.html:** +```html +
+

My Module

+

Hello from my custom module!

+
+``` + +**mymodule/mymodule.css:** +```css +.mymodule-layout { + padding: var(--space-xl); + max-width: 1200px; + margin: 0 auto; + padding-top: calc(var(--header-height) + var(--space-xl)); +} + +.mymodule-layout h1 { + color: var(--text-primary); + margin-bottom: var(--space-lg); +} +``` + +**mymodule/mymodule.js:** +```javascript +console.log('My Module loaded!'); + +// Initialize your module here +``` + +### Step 2: Register Module + +Edit `js/layout.js`, add to `sections` object: + +```javascript +const sections = { + drive: "drive/drive.html", + tasks: "tasks/tasks.html", + mail: "mail/mail.html", + chat: "chat/chat.html", + mymodule: "mymodule/mymodule.html" // Add this +}; +``` + +### Step 3: Add to Apps Menu + +Edit `index.html`, add to `.app-grid`: + +```html + + + My Module + +``` + +### Step 4: Test Your Module + +1. Reload application +2. Click apps menu (9 dots icon) +3. Click "My Module" +4. See your module load! + +## ๐ŸŽฏ Common Tasks + +### Change Logo + +Edit `index.html`, update `logo-icon`: + +```html +
+``` + +### Change App Title + +Edit `index.html`: + +```html +My Awesome App +My Awesome App +``` + +### Customize Colors in Code + +```css +.my-component { + /* Use theme variables */ + background: var(--primary-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); +} + +.my-button { + background: var(--accent-color); + color: hsl(var(--primary-foreground)); +} + +.my-button:hover { + background: var(--accent-hover); +} +``` + +### Add Custom Styles + +Create `css/custom.css`: + +```css +.my-custom-class { + /* Your styles using theme variables */ + padding: var(--space-lg); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); +} +``` + +Link it in `index.html`: + +```html + + +``` + +## ๐Ÿ› Troubleshooting + +### Theme Not Loading? + +1. Check browser console (F12) +2. Verify file exists in `public/themes/` +3. Check CSS syntax (no commas in HSL values!) +4. Clear browser cache (Ctrl+Shift+R) + +### Module Not Showing? + +1. Check all three files exist (HTML, CSS, JS) +2. Verify registration in `layout.js` +3. Check browser console for errors +4. Ensure file paths are correct + +### Colors Look Wrong? + +HSL format is: `H S% L%` (no commas!) + +**Wrong:** `hsl(280, 90%, 60%)` +**Right:** `280 90% 60%` + +### Can't Switch Sections? + +1. Check console for JavaScript errors +2. Verify `window.switchSection` is defined +3. Try reloading the page +4. Clear localStorage + +## ๐Ÿ“š Next Steps + +- **Themes:** Read [THEMES.md](THEMES.md) for advanced theming +- **Components:** Check [COMPONENTS.md](COMPONENTS.md) for UI components +- **Full Docs:** See [README.md](README.md) for complete documentation + +## ๐Ÿ’ก Tips & Tricks + +### Debug Mode + +Open browser console and enable verbose logging: + +```javascript +localStorage.setItem('debug', 'true'); +location.reload(); +``` + +### Test All Themes Quickly + +```javascript +// Run in browser console +const themes = ThemeManager.getAvailableThemes(); +themes.forEach((t, i) => { + setTimeout(() => ThemeManager.loadTheme(t.id), i * 2000); +}); +``` + +### HSL Color Picker + +Use online tools: +- https://hslpicker.com/ +- https://coolors.co/ +- Chrome DevTools color picker + +### Accessibility Check + +```javascript +// Check contrast ratios in console +const bg = getComputedStyle(document.body).backgroundColor; +const fg = getComputedStyle(document.body).color; +console.log('Background:', bg); +console.log('Foreground:', fg); +``` + +## ๐ŸŽ“ Learning Resources + +- **HSL Colors:** https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hsl +- **CSS Variables:** https://developer.mozilla.org/en-US/docs/Web/CSS/--* +- **Accessibility:** https://www.w3.org/WAI/WCAG21/quickref/ +- **Alpine.js:** https://alpinejs.dev/ (used in Drive/Tasks/Mail) + +## ๐Ÿค Get Help + +- Check documentation files in this directory +- Review browser console for errors +- Test with different browsers +- Try disabling browser extensions + +## โœ… Checklist for New Features + +- [ ] Works with all themes +- [ ] Responsive on mobile +- [ ] Keyboard navigation works +- [ ] ARIA labels present +- [ ] Uses theme variables +- [ ] No console errors +- [ ] Documented in code +- [ ] Tested in multiple browsers + +--- + +**Happy Building! ๐Ÿš€** + +*Need more help? See README.md, THEMES.md, and COMPONENTS.md* \ No newline at end of file diff --git a/web/desktop/README.md b/web/desktop/README.md new file mode 100644 index 000000000..3299a79a2 --- /dev/null +++ b/web/desktop/README.md @@ -0,0 +1,433 @@ +# General Bots Desktop + +A modern, themeable desktop web application for AI-powered workspace featuring Chat, Drive, Tasks, and Mail modules. + +## ๐ŸŽจ Features + +- **Modern UI/UX**: Glass morphism effects, smooth animations, and responsive design +- **Theme System**: 19+ built-in themes with HSL-based customization +- **Modular Architecture**: Pluggable sections (Chat, Drive, Tasks, Mail) +- **Real-time Communication**: WebSocket-based chat with LiveKit integration +- **Accessibility**: ARIA labels, keyboard navigation, screen reader support +- **Performance**: Lazy loading, section caching, optimized animations +- **Responsive**: Works on desktop, tablet, and mobile devices + +## ๐Ÿš€ Quick Start + +### Prerequisites + +- Modern web browser (Chrome 88+, Firefox 89+, Safari 14+) +- Web server (Apache, Nginx, or development server) + +### Installation + +1. Clone or download the project +2. Serve the `web/desktop` directory through a web server +3. Navigate to `http://localhost/desktop/` (or your server URL) + +### Development Server + +```bash +# Using Python +cd web/desktop +python -m http.server 8000 + +# Using Node.js +npx http-server -p 8000 + +# Using PHP +php -S localhost:8000 +``` + +Then open `http://localhost:8000` in your browser. + +## ๐Ÿ“ Project Structure + +``` +desktop/ +โ”œโ”€โ”€ index.html # Main entry point +โ”œโ”€โ”€ README.md # This file +โ”œโ”€โ”€ THEMES.md # Theme system documentation +โ”‚ +โ”œโ”€โ”€ css/ +โ”‚ โ””โ”€โ”€ app.css # Core styles and theme bridge +โ”‚ +โ”œโ”€โ”€ js/ +โ”‚ โ”œโ”€โ”€ theme-manager.js # Theme switching logic +โ”‚ โ””โ”€โ”€ layout.js # Section loading and navigation +โ”‚ +โ”œโ”€โ”€ public/ +โ”‚ โ””โ”€โ”€ themes/ # Theme CSS files +โ”‚ โ”œโ”€โ”€ orange.css +โ”‚ โ”œโ”€โ”€ cyberpunk.css +โ”‚ โ”œโ”€โ”€ retrowave.css +โ”‚ โ””โ”€โ”€ ... (16 more themes) +โ”‚ +โ”œโ”€โ”€ chat/ +โ”‚ โ”œโ”€โ”€ chat.html # Chat UI +โ”‚ โ”œโ”€โ”€ chat.css # Chat styles +โ”‚ โ””โ”€โ”€ chat.js # Chat logic +โ”‚ +โ”œโ”€โ”€ drive/ +โ”‚ โ”œโ”€โ”€ drive.html # Drive UI +โ”‚ โ”œโ”€โ”€ drive.css # Drive styles +โ”‚ โ””โ”€โ”€ drive.js # Drive logic +โ”‚ +โ”œโ”€โ”€ tasks/ +โ”‚ โ”œโ”€โ”€ tasks.html # Tasks UI +โ”‚ โ”œโ”€โ”€ tasks.css # Tasks styles +โ”‚ โ””โ”€โ”€ tasks.js # Tasks logic +โ”‚ +โ””โ”€โ”€ mail/ + โ”œโ”€โ”€ mail.html # Mail UI + โ”œโ”€โ”€ mail.css # Mail styles + โ””โ”€โ”€ mail.js # Mail logic +``` + +## ๐ŸŽจ Theme System + +The application uses a sophisticated HSL-based theme system that allows for dynamic theme switching without page reloads. + +### Using Themes + +1. Click the theme dropdown in the header +2. Select from 19+ available themes +3. Theme preference is saved to localStorage + +### Available Themes + +- **Default** - Clean, modern light theme +- **Orange** - Office-inspired orange palette +- **Cyberpunk** - Neon cyberpunk aesthetic +- **Retrowave** - 80s synthwave vibes +- **Vapor Dream** - Vaporwave aesthetic +- **Y2K Glow** - Y2K-era design +- **3D Bevel** - Classic 3D beveled look +- **Arcade Flash** - Retro arcade style +- **Disco Fever** - 70s disco aesthetic +- **Grunge Era** - 90s grunge style +- **Jazz Age** - Art deco inspired +- **Mellow Gold** - Warm, mellow tones +- **Mid Century Modern** - 50s/60s design +- **Polaroid Memories** - Vintage photo aesthetic +- **Saturday Cartoons** - Bright, playful colors +- **Seaside Postcard** - Beach-inspired palette +- **Typewriter** - Classic typewriter look +- **Xerox UI** - Office copier aesthetic +- **XTree Gold** - DOS file manager tribute + +### Creating Custom Themes + +See [THEMES.md](THEMES.md) for detailed documentation on creating and customizing themes. + +## โŒจ๏ธ Keyboard Shortcuts + +- **Alt + 1** - Switch to Chat +- **Alt + 2** - Switch to Drive +- **Alt + 3** - Switch to Tasks +- **Alt + 4** - Switch to Mail +- **Esc** - Close open menus/dropdowns +- **Enter/Space** - Activate focused element + +## ๐Ÿงฉ Modules + +### Chat + +Real-time chat interface with: +- WebSocket communication +- Markdown support +- Voice input (optional) +- Message history +- Typing indicators +- Connection status + +### Drive + +File management system with: +- File upload/download +- Folder navigation +- File preview +- Search functionality +- Sorting and filtering + +### Tasks + +Task management with: +- Create/edit/delete tasks +- Task prioritization +- Due dates +- Categories/tags +- Completion tracking + +### Mail + +Email interface with: +- Inbox/sent/drafts +- Compose messages +- Rich text editing +- Attachments +- Search and filters + +## ๐ŸŽฏ Architecture + +### Theme System + +The theme system uses a two-layer architecture: + +1. **Base HSL Variables** - Defined in theme files +2. **Working Variables** - Automatically derived in `app.css` + +Example: +```css +/* Base variable (in theme file) */ +--primary: 217 91% 60%; + +/* Working variable (auto-derived) */ +--accent-color: hsl(var(--primary)); +--accent-light: hsla(var(--primary) / 0.1); +``` + +### Section Loading + +Sections are loaded dynamically: + +1. User clicks app icon or uses keyboard shortcut +2. `layout.js` loads HTML, CSS, and JS for the section +3. Section content is cached for fast switching +4. Alpine.js components are initialized (for Drive, Tasks, Mail) +5. Chat uses custom WebSocket logic + +### State Management + +- Theme preference: `localStorage.getItem('gb-theme')` +- Section cache: In-memory JavaScript object +- WebSocket connections: Managed per section + +## ๐Ÿ”ง Configuration + +### Theme Configuration + +Edit `js/theme-manager.js` to add/remove themes: + +```javascript +const themes = [ + { id: "default", name: "๐ŸŽจ Default", file: null }, + { id: "mytheme", name: "๐ŸŒŸ My Theme", file: "mytheme.css" } +]; +``` + +### Section Configuration + +Edit `js/layout.js` to add/remove sections: + +```javascript +const sections = { + chat: "chat/chat.html", + mysection: "mysection/mysection.html" +}; +``` + +## ๐ŸŽจ Styling Guidelines + +### Using Theme Variables + +Always use theme variables for colors: + +```css +/* โœ… Good */ +.my-component { + background: var(--primary-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); +} + +/* โŒ Bad */ +.my-component { + background: #ffffff; + color: #000000; + border: 1px solid #cccccc; +} +``` + +### Responsive Breakpoints + +```css +/* Mobile */ +@media (max-width: 480px) { } + +/* Tablet */ +@media (max-width: 768px) { } + +/* Desktop */ +@media (min-width: 769px) { } +``` + +## ๐Ÿงช Testing + +### Browser Testing + +Test on: +- Chrome/Edge (latest) +- Firefox (latest) +- Safari (latest) +- Mobile browsers + +### Theme Testing + +1. Switch to each theme +2. Navigate to all sections +3. Test interactive elements +4. Verify contrast ratios +5. Check accessibility + +### Accessibility Testing + +- Use screen reader (NVDA, JAWS, VoiceOver) +- Navigate with keyboard only +- Test with high contrast mode +- Verify ARIA labels + +## ๐Ÿ› Troubleshooting + +### Themes Not Loading + +1. Check browser console for errors +2. Verify theme file exists in `public/themes/` +3. Clear browser cache +4. Check theme file syntax + +### Sections Not Switching + +1. Check console for JavaScript errors +2. Verify section files exist +3. Check network tab for failed requests +4. Clear localStorage + +### WebSocket Connection Issues + +1. Check server is running +2. Verify WebSocket URL +3. Check browser console +4. Test network connectivity + +## ๐Ÿ“Š Performance + +### Optimization Techniques + +- **Lazy Loading**: Sections loaded on demand +- **Caching**: Section HTML/CSS/JS cached after first load +- **CSS Variables**: Fast theme switching without reflow +- **Debouncing**: Input handlers debounced +- **Animations**: GPU-accelerated with `transform` and `opacity` + +### Performance Metrics + +- Initial load: < 1s +- Theme switch: < 100ms +- Section switch: < 200ms (cached), < 500ms (first load) +- Animation: 60 FPS target + +## ๐Ÿ”’ Security + +### Best Practices + +- No inline event handlers +- CSP-friendly code +- XSS protection in chat +- Sanitized user input +- Secure WebSocket connections (WSS in production) + +### Content Security Policy + +Recommended CSP header: + +``` +Content-Security-Policy: + default-src 'self'; + script-src 'self' https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://unpkg.com; + style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; + font-src https://fonts.gstatic.com; +``` + +## ๐Ÿค Contributing + +### Adding a New Theme + +1. Create `public/themes/mytheme.css` +2. Define HSL variables (see THEMES.md) +3. Add to `js/theme-manager.js` +4. Test thoroughly +5. Submit pull request + +### Adding a New Section + +1. Create directory: `mysection/` +2. Add files: `mysection.html`, `mysection.css`, `mysection.js` +3. Register in `js/layout.js` +4. Add icon to apps menu in `index.html` +5. Test integration +6. Update documentation + +## ๐Ÿ“ API Reference + +### ThemeManager + +```javascript +// Initialize +ThemeManager.init(); + +// Load theme +ThemeManager.loadTheme('cyberpunk'); + +// Subscribe to changes +ThemeManager.subscribe((data) => { + console.log(data.themeId, data.themeName); +}); + +// Get themes +const themes = ThemeManager.getAvailableThemes(); +``` + +### Layout Manager + +```javascript +// Switch section +window.switchSection('chat'); + +// Get current section +const section = window.location.hash.substring(1); +``` + +## ๐Ÿ”„ Version History + +### v1.0.0 (Current) +- Initial release +- 19 built-in themes +- 4 core modules (Chat, Drive, Tasks, Mail) +- HSL-based theme system +- Keyboard shortcuts +- Accessibility improvements + +## ๐Ÿ“„ License + +See project root for license information. + +## ๐Ÿ™‹ Support + +For issues, questions, or contributions: +- Check documentation in THEMES.md +- Review browser console for errors +- Test with different browsers/themes +- Contact General Bots team + +## ๐ŸŒŸ Acknowledgments + +- **shadcn/ui** - Theme variable inspiration +- **Alpine.js** - Reactive components +- **GSAP** - Smooth animations +- **LiveKit** - Real-time communication +- **marked** - Markdown parsing + +--- + +**Built with โค๏ธ by the General Bots Team** \ No newline at end of file diff --git a/web/desktop/REBUILD_NOTES.md b/web/desktop/REBUILD_NOTES.md new file mode 100644 index 000000000..1996d8f94 --- /dev/null +++ b/web/desktop/REBUILD_NOTES.md @@ -0,0 +1,364 @@ +# General Bots Desktop - UI Rebuild Summary + +## ๐ŸŽฏ Objective + +Rebuild the General Bots Desktop UI to properly integrate the theme system from `public/themes/` while maintaining all existing functionality. + +## โœ… What Was Done + +### 1. **Unified Theme System Implementation** + +#### Problem +- The application had two separate variable naming conventions: + - Theme files used shadcn/ui HSL format: `--background: 0 0% 100%` + - Application CSS used custom variables: `--primary-bg: #ffffff` + - Themes weren't properly connected to the UI + +#### Solution +- Created a **two-layer bridge system** in `css/app.css`: + 1. **Layer 1 (Base)**: HSL theme variables from theme files + 2. **Layer 2 (Working)**: Auto-derived CSS variables for components + +```css +/* Layer 1: Base theme variables (HSL) */ +--primary: 217 91% 60%; + +/* Layer 2: Working variables (auto-derived) */ +--accent-color: hsl(var(--primary)); +--accent-light: hsla(var(--primary) / 0.1); +``` + +### 2. **Rebuilt `css/app.css`** + +**Changes:** +- โœ… Converted all color variables to use HSL format +- โœ… Created bridge between theme HSL variables and working CSS properties +- โœ… Added support for alpha transparency: `hsla(var(--primary) / 0.1)` +- โœ… Made border radius scalable based on theme `--radius` +- โœ… Added dark mode auto-detection via `@media (prefers-color-scheme: dark)` +- โœ… Enhanced accessibility with focus states and reduced motion support +- โœ… Added connection status component styles +- โœ… Improved responsive design with better mobile breakpoints +- โœ… Added utility classes for buttons, cards, and common patterns + +**Key Features:** +- Instant theme switching (no page reload) +- Automatic color derivation from theme base colors +- Glass morphism effects with theme-aware transparency +- Consistent spacing, shadows, and transitions +- Print-friendly styles +- Accessibility features (focus rings, reduced motion, screen reader support) + +### 3. **Enhanced `index.html`** + +**Improvements:** +- โœ… Restructured with semantic HTML5 elements +- โœ… Added comprehensive ARIA labels and roles +- โœ… Implemented keyboard navigation support +- โœ… Enhanced apps menu with better accessibility +- โœ… Added meta tags for better SEO and PWA support +- โœ… Improved JavaScript initialization with error handling +- โœ… Added keyboard shortcuts (Alt+1-4 for sections, Esc for menus) +- โœ… Better event handling and state management +- โœ… Theme change notifications and logging + +**New Features:** +- Theme change subscriber system +- Automatic document title updates +- Meta theme-color synchronization +- Console logging with helpful keyboard shortcut guide +- Online/offline connection monitoring + +### 4. **Documentation Created** + +#### `THEMES.md` (400+ lines) +Comprehensive theme system documentation including: +- Architecture explanation (two-layer system) +- Complete variable reference table +- Step-by-step guide for creating themes +- HSL color format explanation +- Best practices for contrast and accessibility +- Usage examples for components +- API reference +- Troubleshooting guide +- List of all 19 built-in themes + +#### `README.md` (433+ lines) +Complete application documentation: +- Features overview +- Quick start guide +- Project structure +- Theme system introduction +- Keyboard shortcuts reference +- Module descriptions (Chat, Drive, Tasks, Mail) +- Architecture explanation +- Configuration guides +- Testing procedures +- Troubleshooting section +- Performance metrics +- Security best practices +- Contributing guidelines + +#### `COMPONENTS.md` (773+ lines) +Detailed UI component library: +- Layout components (header, main content) +- Interactive components (buttons, dropdowns, avatars) +- Content components (cards, panels, loaders) +- Animation utilities +- Accessibility features +- Z-index hierarchy +- Color system reference +- Spacing and border radius scales +- Shadow system +- Transition timing +- Component creation checklist + +#### `QUICKSTART.md` (359+ lines) +Developer quick start guide: +- Installation options (Python, Node.js, PHP) +- 5-minute theme creation tutorial +- Module creation walkthrough +- Common tasks and solutions +- Troubleshooting tips +- Code examples +- Learning resources +- Feature checklist + +## ๐ŸŽจ Theme System Architecture + +### How It Works + +1. **Theme Files Define Base Colors** (in `public/themes/*.css`): + ```css + :root { + --primary: 217 91% 60%; /* HSL: blue */ + --background: 0 0% 100%; /* HSL: white */ + } + ``` + +2. **App.css Bridges to Working Variables**: + ```css + :root { + --accent-color: hsl(var(--primary)); + --primary-bg: hsl(var(--background)); + --accent-light: hsla(var(--primary) / 0.1); + } + ``` + +3. **Components Use Working Variables**: + ```css + .button { + background: var(--accent-color); + color: hsl(var(--primary-foreground)); + } + ``` + +### Benefits + +- โœ… **No page reload** when switching themes +- โœ… **Automatic color derivation** (hover states, transparency, etc.) +- โœ… **Consistent theming** across all components +- โœ… **Easy customization** - just edit HSL values +- โœ… **19+ themes** included out of the box +- โœ… **Dark mode support** with system preference detection + +## ๐Ÿ”ง Technical Improvements + +### Accessibility +- ARIA labels on all interactive elements +- Keyboard navigation support (Alt+1-4, Esc) +- Focus visible indicators +- Screen reader friendly +- Reduced motion support for animations +- Proper semantic HTML structure + +### Performance +- CSS variable updates are instant +- Section caching after first load +- Optimized animations (GPU-accelerated) +- Lazy loading of modules +- Minimal reflows and repaints + +### Code Quality +- Semantic HTML5 elements (`
`, `
`, `
- + + +