From ed5d2e840bd10e390f7d86f583c7c0ae5df114de Mon Sep 17 00:00:00 2001 From: x10102 Date: Mon, 23 Dec 2024 00:00:40 +0100 Subject: [PATCH] User badge prototype --- blueprints/users.py | 11 +- data/scp.db.bak | Bin 0 -> 233472 bytes db.py | 8 + scripts/build_badge_css.bat | 1 + scripts/tailwind_badge_config.js | 8 + static/css/badge.css | 374 +++++++++++ static/css/src/badge.css | 14 + static/css/style.css | 883 ++++++++++++------------- templates/partials/translator_badge.j2 | 15 + 9 files changed, 853 insertions(+), 461 deletions(-) create mode 100644 data/scp.db.bak create mode 100644 scripts/build_badge_css.bat create mode 100644 scripts/tailwind_badge_config.js create mode 100644 static/css/badge.css create mode 100644 static/css/src/badge.css create mode 100644 templates/partials/translator_badge.j2 diff --git a/blueprints/users.py b/blueprints/users.py index 7bb4f5d..854788d 100644 --- a/blueprints/users.py +++ b/blueprints/users.py @@ -74,4 +74,13 @@ def delete_user(uid: int): info(f"User {name} deleted by {current_user.nickname} (ID: {current_user.uid})") flash(f'Uživatel {name} smazán') - return redirect(url_for('index')) \ No newline at end of file + return redirect(url_for('index')) + +# TODO: Move this to separate Blueprint +# TODO: Don't forget to add type parameter for forwards compatibility +@UserController.route('/user//embed', methods=["GET"]) +def user_badge(uid: int): + user = dbs.get_user(uid) or abort(404) + stats = dbs.get_user_stats(uid) + last = dbs.get_last_translation(uid) + return render_template("partials/translator_badge.j2", user=user, stats=stats, last=last) \ No newline at end of file diff --git a/data/scp.db.bak b/data/scp.db.bak new file mode 100644 index 0000000000000000000000000000000000000000..f63106c0872eefd8b8b9f662937ea3e1b2e053d2 GIT binary patch literal 233472 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 z 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 literal 0 HcmV?d00001 diff --git a/db.py b/db.py index 8ded8e9..8d34ea5 100644 --- a/db.py +++ b/db.py @@ -340,6 +340,14 @@ def get_global_stats(self) -> StatisticsRow: query = "SELECT * FROM Statistics" data = self.__tryexec(query).fetchone() return StatisticsRow(*data) + + def get_last_translation(self, uid: int) -> t.Optional[Article]: + query = "SELECT * FROM Article WHERE idauthor=? AND is_original=FALSE ORDER BY added DESC, id DESC LIMIT 1" + data = (uid,) + row = self.__tryexec(query, data).fetchone() + if not row: + return None + return self.__make_article(row) def add_article(self, a: Article) -> int: query = "INSERT INTO Article (name, words, bonus, added, link, idauthor, is_original) VALUES (?, ?, ?, ?, ?, ?, ?)" diff --git a/scripts/build_badge_css.bat b/scripts/build_badge_css.bat new file mode 100644 index 0000000..99fb5f8 --- /dev/null +++ b/scripts/build_badge_css.bat @@ -0,0 +1 @@ +npx tailwindcss -c ./tailwind_badge_config.js -i ../static/css/src/badge.css -o ../static/css/badge.css --watch \ No newline at end of file diff --git a/scripts/tailwind_badge_config.js b/scripts/tailwind_badge_config.js new file mode 100644 index 0000000..6e04c95 --- /dev/null +++ b/scripts/tailwind_badge_config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["../templates/partials/translator_badge.j2", "../models/user.py"], + corePlugins: { + preflight: false, // Disable the preflight / reset so that we don't break WikiDot's (or other sites) CSS + }, + plugins: [], +} \ No newline at end of file diff --git a/static/css/badge.css b/static/css/badge.css new file mode 100644 index 0000000..69f8cd7 --- /dev/null +++ b/static/css/badge.css @@ -0,0 +1,374 @@ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400&display=swap'); + +*, ::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: ; +} + +.static{ + position: static; +} + +.absolute{ + position: absolute; +} + +.relative{ + position: relative; +} + +.bottom-0{ + bottom: 0px; +} + +.right-1{ + right: 0.25rem; +} + +.top-0{ + top: 0px; +} + +.right-0{ + right: 0px; +} + +.m-0{ + margin: 0px; +} + +.mt-1{ + margin-top: 0.25rem; +} + +.mr-5{ + margin-right: 1.25rem; +} + +.block{ + display: block; +} + +.inline{ + display: inline; +} + +.flex{ + display: flex; +} + +.h-24{ + height: 6rem; +} + +.h-full{ + height: 100%; +} + +.flex-1{ + flex: 1 1 0%; +} + +.flex-row{ + flex-direction: row; +} + +.flex-col{ + flex-direction: column; +} + +.items-center{ + align-items: center; +} + +.justify-start{ + justify-content: flex-start; +} + +.rounded-lg{ + border-radius: 0.5rem; +} + +.rounded-xl{ + border-radius: 0.75rem; +} + +.rounded-l-lg{ + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; +} + +.rounded-r-lg{ + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; +} + +.rounded-tr-lg{ + border-top-right-radius: 0.5rem; +} + +.rounded-bl-lg{ + border-bottom-left-radius: 0.5rem; +} + +.border{ + border-width: 1px; +} + +.border-solid{ + border-style: solid; +} + +.border-white{ + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity)); +} + +.bg-black{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} + +.bg-gradient-to-r{ + background-image: linear-gradient(to right, var(--tw-gradient-stops)); +} + +.from-gray-400{ + --tw-gradient-from: #9ca3af; + --tw-gradient-to: rgb(156 163 175 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.from-sky-400{ + --tw-gradient-from: #38bdf8; + --tw-gradient-to: rgb(56 189 248 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.from-fuchsia-600{ + --tw-gradient-from: #c026d3; + --tw-gradient-to: rgb(192 38 211 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.from-pink-500{ + --tw-gradient-from: #ec4899; + --tw-gradient-to: rgb(236 72 153 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.from-gray-700{ + --tw-gradient-from: #374151; + --tw-gradient-to: rgb(55 65 81 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.from-slate-900{ + --tw-gradient-from: #0f172a; + --tw-gradient-to: rgb(15 23 42 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.via-red-500{ + --tw-gradient-to: rgb(239 68 68 / 0); + --tw-gradient-stops: var(--tw-gradient-from), #ef4444, var(--tw-gradient-to); +} + +.via-gray-900{ + --tw-gradient-to: rgb(17 24 39 / 0); + --tw-gradient-stops: var(--tw-gradient-from), #111827, var(--tw-gradient-to); +} + +.via-purple-900{ + --tw-gradient-to: rgb(88 28 135 / 0); + --tw-gradient-stops: var(--tw-gradient-from), #581c87, var(--tw-gradient-to); +} + +.to-gray-600{ + --tw-gradient-to: #4b5563; +} + +.to-blue-500{ + --tw-gradient-to: #3b82f6; +} + +.to-pink-600{ + --tw-gradient-to: #db2777; +} + +.to-yellow-500{ + --tw-gradient-to: #eab308; +} + +.to-black{ + --tw-gradient-to: #000; +} + +.to-slate-900{ + --tw-gradient-to: #0f172a; +} + +.p-2{ + padding: 0.5rem; +} + +.pl-4{ + padding-left: 1rem; +} + +.text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-xs{ + font-size: 0.75rem; + line-height: 1rem; +} + +.text-sm{ + font-size: 0.875rem; + line-height: 1.25rem; +} + +.font-bold{ + font-weight: 700; +} + +.font-semibold{ + font-weight: 600; +} + +.text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.no-underline{ + text-decoration-line: none; +} + +.opacity-50{ + opacity: 0.5; +} + +.opacity-40{ + opacity: 0.4; +} + +.opacity-25{ + opacity: 0.25; +} + +.transition-opacity{ + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +html, body { + font-family: 'IBM Plex Sans'; +} + +.gradient-background { + background: linear-gradient(15deg,#a71bb9,#000000,#9f1239); + background-size: 150% 150%; + animation: gradient-animation 6s ease infinite; +} + +.hover\:opacity-75:hover{ + opacity: 0.75; +} + +.hover\:opacity-100:hover{ + opacity: 1; +} \ No newline at end of file diff --git a/static/css/src/badge.css b/static/css/src/badge.css new file mode 100644 index 0000000..3045540 --- /dev/null +++ b/static/css/src/badge.css @@ -0,0 +1,14 @@ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400&display=swap'); +@tailwind base; +@tailwind components; +@tailwind utilities; + +html, body { + font-family: 'IBM Plex Sans'; +} + +.gradient-background { + background: linear-gradient(15deg,#a71bb9,#000000,#9f1239); + background-size: 150% 150%; + animation: gradient-animation 6s ease infinite; + } \ No newline at end of file diff --git a/static/css/style.css b/static/css/style.css index 0dadc55..b47ff5d 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -1,115 +1,7 @@ @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400&display=swap'); -*, ::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-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --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: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::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-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --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: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - /* -! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com +! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com */ /* @@ -141,12 +33,9 @@ 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. -7. Disable tap highlights on iOS */ -html, -:host { +html { line-height: 1.5; /* 1 */ -webkit-text-size-adjust: 100%; @@ -156,14 +45,10 @@ html, -o-tab-size: 4; tab-size: 4; /* 3 */ - font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + 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 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ } /* @@ -235,10 +120,8 @@ strong { } /* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. */ code, @@ -247,12 +130,8 @@ samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ font-size: 1em; - /* 4 */ + /* 2 */ } /* @@ -311,18 +190,12 @@ select, textarea { font-family: inherit; /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ font-size: 100%; /* 1 */ font-weight: inherit; /* 1 */ line-height: inherit; /* 1 */ - letter-spacing: inherit; - /* 1 */ color: inherit; /* 1 */ margin: 0; @@ -346,9 +219,9 @@ select { */ button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { +[type='button'], +[type='reset'], +[type='submit'] { -webkit-appearance: button; /* 1 */ background-color: transparent; @@ -467,14 +340,6 @@ menu { padding: 0; } -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - /* Prevent resizing textareas horizontally by default. */ @@ -556,6 +421,100 @@ video { display: none; } +*, ::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%; } @@ -806,7 +765,7 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); --tw-backdrop-blur: blur(4px); -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: 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); } @media (min-width: 768px){ @@ -829,7 +788,7 @@ video { justify-content: center; --tw-backdrop-blur: blur(4px); -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: 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); height: 100%; width: 100%; } @@ -900,26 +859,26 @@ video { position: relative; } -.bottom-0{ - bottom: 0px; +.top-0{ + top: 0px; } .left-0{ left: 0px; } -.left-5{ - left: 1.25rem; -} - -.top-0{ - top: 0px; +.bottom-0{ + bottom: 0px; } .top-3{ top: 0.75rem; } +.left-5{ + left: 1.25rem; +} + .z-40{ z-index: 40; } @@ -932,19 +891,14 @@ video { margin: 0px; } -.mx-1{ - margin-left: 0.25rem; - margin-right: 0.25rem; -} - -.mx-10{ - margin-left: 2.5rem; - margin-right: 2.5rem; +.my-4{ + margin-top: 1rem; + margin-bottom: 1rem; } -.mx-2{ - margin-left: 0.5rem; - margin-right: 0.5rem; +.my-5{ + margin-top: 1.25rem; + margin-bottom: 1.25rem; } .mx-auto{ @@ -952,9 +906,9 @@ video { margin-right: auto; } -.my-1{ - margin-top: 0.25rem; - margin-bottom: 0.25rem; +.my-6{ + margin-top: 1.5rem; + margin-bottom: 1.5rem; } .my-2{ @@ -962,84 +916,89 @@ video { margin-bottom: 0.5rem; } +.mx-10{ + margin-left: 2.5rem; + margin-right: 2.5rem; +} + +.my-1{ + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + .my-3{ margin-top: 0.75rem; margin-bottom: 0.75rem; } -.my-4{ - margin-top: 1rem; - margin-bottom: 1rem; -} - -.my-5{ - margin-top: 1.25rem; - margin-bottom: 1.25rem; +.mx-1{ + margin-left: 0.25rem; + margin-right: 0.25rem; } -.my-6{ - margin-top: 1.5rem; - margin-bottom: 1.5rem; +.mx-2{ + margin-left: 0.5rem; + margin-right: 0.5rem; } -.mb-10{ - margin-bottom: 2.5rem; +.mb-4{ + margin-bottom: 1rem; } -.mb-2{ - margin-bottom: 0.5rem; +.mb-6{ + margin-bottom: 1.5rem; +} + +.mr-2{ + margin-right: 0.5rem; } .mb-3{ margin-bottom: 0.75rem; } -.mb-4{ - margin-bottom: 1rem; +.mt-auto{ + margin-top: auto; } -.mb-6{ - margin-bottom: 1.5rem; +.mb-2{ + margin-bottom: 0.5rem; } -.mb-8{ - margin-bottom: 2rem; +.mr-6{ + margin-right: 1.5rem; } -.ml-3{ - margin-left: 0.75rem; +.mt-1{ + margin-top: 0.25rem; } -.mr-2{ - margin-right: 0.5rem; +.mt-4{ + margin-top: 1rem; } .mr-4{ margin-right: 1rem; } -.mr-6{ - margin-right: 1.5rem; +.mb-8{ + margin-bottom: 2rem; } -.mt-1{ - margin-top: 0.25rem; +.ml-3{ + margin-left: 0.75rem; } -.mt-16{ - margin-top: 4rem; +.mb-10{ + margin-bottom: 2.5rem; } .mt-2{ margin-top: 0.5rem; } -.mt-4{ - margin-top: 1rem; -} - -.mt-auto{ - margin-top: auto; +.mt-16{ + margin-top: 4rem; } .block{ @@ -1078,48 +1037,52 @@ video { display: none; } +.h-full{ + height: 100%; +} + .h-10{ height: 2.5rem; } -.h-12{ - height: 3rem; +.h-auto{ + height: auto; } .h-2{ height: 0.5rem; } -.h-8{ - height: 2rem; +.h-screen{ + height: 100vh; } -.h-auto{ - height: auto; +.h-12{ + height: 3rem; } -.h-full{ - height: 100%; +.h-8{ + height: 2rem; } -.h-screen{ - height: 100vh; +.h-48{ + height: 12rem; } .max-h-48{ max-height: 12rem; } -.w-36{ - width: 9rem; +.max-h-64{ + max-height: 16rem; } -.w-64{ - width: 16rem; +.w-full{ + width: 100%; } -.w-8{ - width: 2rem; +.w-64{ + width: 16rem; } .w-\[90\%\]{ @@ -1130,22 +1093,22 @@ video { width: auto; } -.w-fit{ - width: -moz-fit-content; - width: fit-content; +.w-min{ + width: -moz-min-content; + width: min-content; } -.w-full{ - width: 100%; +.w-36{ + width: 9rem; } -.w-min{ - width: -moz-min-content; - width: min-content; +.w-8{ + width: 2rem; } -.min-w-56{ - min-width: 14rem; +.w-fit{ + width: -moz-fit-content; + width: fit-content; } .min-w-\[12em\]{ @@ -1171,6 +1134,22 @@ video { 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 fadeout{ + 0%{ + opacity: 1; + transform: translateY(0); + } + + 100%{ + opacity: 0; + transform: translateY(10em); + } +} + +.animate-fadeout{ + animation: fadeout 1s ease-in-out; +} + @keyframes fadein{ 0%{ opacity: 0; @@ -1191,20 +1170,18 @@ video { animation: fadein 1s ease-in-out; } -@keyframes fadeout{ +@keyframes timeout{ 0%{ - opacity: 1; - transform: translateY(0); + width: 100%; } 100%{ - opacity: 0; - transform: translateY(10em); + width: 0%; } } -.animate-fadeout{ - animation: fadeout 1s ease-in-out; +.animate-timeout{ + animation: timeout 5s linear; } @keyframes pulse{ @@ -1217,20 +1194,6 @@ video { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } -@keyframes timeout{ - 0%{ - width: 100%; - } - - 100%{ - width: 0%; - } -} - -.animate-timeout{ - animation: timeout 5s linear; -} - .cursor-pointer{ cursor: pointer; } @@ -1291,20 +1254,20 @@ video { justify-content: space-around; } -.gap-1{ - gap: 0.25rem; -} - .gap-2{ gap: 0.5rem; } +.gap-4{ + gap: 1rem; +} + .gap-3{ gap: 0.75rem; } -.gap-4{ - gap: 1rem; +.gap-1{ + gap: 0.25rem; } .gap-6{ @@ -1323,64 +1286,55 @@ video { overflow: hidden; } +.rounded-md{ + border-radius: 0.375rem; +} + .rounded-2xl{ border-radius: 1rem; } -.rounded-\[50\%\]{ - border-radius: 50%; +.rounded-xl{ + border-radius: 0.75rem; } .rounded-full{ border-radius: 9999px; } -.rounded-lg{ - border-radius: 0.5rem; +.rounded-\[50\%\]{ + border-radius: 50%; } -.rounded-md{ - border-radius: 0.375rem; +.rounded-lg{ + border-radius: 0.5rem; } -.rounded-xl{ - border-radius: 0.75rem; +.border-2{ + border-width: 2px; } .border{ border-width: 1px; } -.border-2{ - border-width: 2px; -} - .border-b-2{ border-bottom-width: 2px; } -.border-black{ - --tw-border-opacity: 1; - border-color: rgb(0 0 0 / var(--tw-border-opacity)); -} - .border-green-500{ --tw-border-opacity: 1; border-color: rgb(34 197 94 / var(--tw-border-opacity)); } -.border-green-800{ - --tw-border-opacity: 1; - border-color: rgb(22 101 52 / var(--tw-border-opacity)); -} - .border-purple-600{ --tw-border-opacity: 1; border-color: rgb(147 51 234 / var(--tw-border-opacity)); } -.border-red-500\/40{ - border-color: rgb(239 68 68 / 0.4); +.border-yellow-400{ + --tw-border-opacity: 1; + border-color: rgb(250 204 21 / var(--tw-border-opacity)); } .border-red-600{ @@ -1388,19 +1342,14 @@ video { border-color: rgb(220 38 38 / var(--tw-border-opacity)); } -.border-red-900{ - --tw-border-opacity: 1; - border-color: rgb(127 29 29 / var(--tw-border-opacity)); -} - .border-rose-500{ --tw-border-opacity: 1; border-color: rgb(244 63 94 / var(--tw-border-opacity)); } -.border-slate-400{ +.border-white{ --tw-border-opacity: 1; - border-color: rgb(148 163 184 / var(--tw-border-opacity)); + border-color: rgb(255 255 255 / var(--tw-border-opacity)); } .border-slate-900{ @@ -1408,36 +1357,41 @@ video { border-color: rgb(15 23 42 / var(--tw-border-opacity)); } -.border-white{ +.border-black{ --tw-border-opacity: 1; - border-color: rgb(255 255 255 / var(--tw-border-opacity)); + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + +.border-slate-400{ + --tw-border-opacity: 1; + border-color: rgb(148 163 184 / var(--tw-border-opacity)); } .border-white\/20{ border-color: rgb(255 255 255 / 0.2); } -.border-yellow-400{ +.border-green-800{ --tw-border-opacity: 1; - border-color: rgb(250 204 21 / var(--tw-border-opacity)); + border-color: rgb(22 101 52 / var(--tw-border-opacity)); } -.border-opacity-20{ - --tw-border-opacity: 0.2; +.border-red-900{ + --tw-border-opacity: 1; + border-color: rgb(127 29 29 / var(--tw-border-opacity)); } -.bg-black{ - --tw-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +.border-red-500\/40{ + border-color: rgb(239 68 68 / 0.4); } -.bg-black\/30{ - background-color: rgb(0 0 0 / 0.3); +.border-opacity-20{ + --tw-border-opacity: 0.2; } -.bg-blue-600{ +.bg-green-600{ --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); + background-color: rgb(22 163 74 / var(--tw-bg-opacity)); } .bg-gray-500{ @@ -1445,42 +1399,51 @@ video { background-color: rgb(107 114 128 / var(--tw-bg-opacity)); } -.bg-green-600{ - --tw-bg-opacity: 1; - background-color: rgb(22 163 74 / var(--tw-bg-opacity)); +.bg-white\/5{ + background-color: rgb(255 255 255 / 0.05); } -.bg-red-500\/10{ - background-color: rgb(239 68 68 / 0.1); +.bg-black{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); } .bg-transparent{ background-color: transparent; } +.bg-white\/75{ + background-color: rgb(255 255 255 / 0.75); +} + +.bg-black\/30{ + background-color: rgb(0 0 0 / 0.3); +} + .bg-white{ --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity)); } -.bg-white\/10{ - background-color: rgb(255 255 255 / 0.1); -} - .bg-white\/20{ background-color: rgb(255 255 255 / 0.2); } -.bg-white\/30{ - background-color: rgb(255 255 255 / 0.3); +.bg-blue-600{ + --tw-bg-opacity: 1; + background-color: rgb(37 99 235 / var(--tw-bg-opacity)); } -.bg-white\/5{ - background-color: rgb(255 255 255 / 0.05); +.bg-red-500\/10{ + background-color: rgb(239 68 68 / 0.1); } -.bg-white\/75{ - background-color: rgb(255 255 255 / 0.75); +.bg-white\/10{ + background-color: rgb(255 255 255 / 0.1); +} + +.bg-white\/30{ + background-color: rgb(255 255 255 / 0.3); } .bg-opacity-20{ @@ -1499,100 +1462,95 @@ video { background-image: linear-gradient(to right, var(--tw-gradient-stops)); } -.from-fuchsia-600{ - --tw-gradient-from: #c026d3 var(--tw-gradient-from-position); - --tw-gradient-to: rgb(192 38 211 / 0) var(--tw-gradient-to-position); +.from-gray-400{ + --tw-gradient-from: #9ca3af; + --tw-gradient-to: rgb(156 163 175 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.from-gray-400{ - --tw-gradient-from: #9ca3af var(--tw-gradient-from-position); - --tw-gradient-to: rgb(156 163 175 / 0) var(--tw-gradient-to-position); +.from-sky-400{ + --tw-gradient-from: #38bdf8; + --tw-gradient-to: rgb(56 189 248 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.from-gray-700{ - --tw-gradient-from: #374151 var(--tw-gradient-from-position); - --tw-gradient-to: rgb(55 65 81 / 0) var(--tw-gradient-to-position); +.from-fuchsia-600{ + --tw-gradient-from: #c026d3; + --tw-gradient-to: rgb(192 38 211 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } .from-pink-500{ - --tw-gradient-from: #ec4899 var(--tw-gradient-from-position); - --tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position); + --tw-gradient-from: #ec4899; + --tw-gradient-to: rgb(236 72 153 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.from-sky-400{ - --tw-gradient-from: #38bdf8 var(--tw-gradient-from-position); - --tw-gradient-to: rgb(56 189 248 / 0) var(--tw-gradient-to-position); +.from-gray-700{ + --tw-gradient-from: #374151; + --tw-gradient-to: rgb(55 65 81 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } .from-slate-900{ - --tw-gradient-from: #0f172a var(--tw-gradient-from-position); - --tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position); + --tw-gradient-from: #0f172a; + --tw-gradient-to: rgb(15 23 42 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.via-gray-900{ - --tw-gradient-to: rgb(17 24 39 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), #111827 var(--tw-gradient-via-position), var(--tw-gradient-to); +.via-red-500{ + --tw-gradient-to: rgb(239 68 68 / 0); + --tw-gradient-stops: var(--tw-gradient-from), #ef4444, var(--tw-gradient-to); } -.via-purple-900{ - --tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), #581c87 var(--tw-gradient-via-position), var(--tw-gradient-to); +.via-gray-900{ + --tw-gradient-to: rgb(17 24 39 / 0); + --tw-gradient-stops: var(--tw-gradient-from), #111827, var(--tw-gradient-to); } -.via-red-500{ - --tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), #ef4444 var(--tw-gradient-via-position), var(--tw-gradient-to); +.via-purple-900{ + --tw-gradient-to: rgb(88 28 135 / 0); + --tw-gradient-stops: var(--tw-gradient-from), #581c87, var(--tw-gradient-to); } -.to-black{ - --tw-gradient-to: #000 var(--tw-gradient-to-position); +.to-gray-600{ + --tw-gradient-to: #4b5563; } .to-blue-500{ - --tw-gradient-to: #3b82f6 var(--tw-gradient-to-position); + --tw-gradient-to: #3b82f6; } -.to-gray-600{ - --tw-gradient-to: #4b5563 var(--tw-gradient-to-position); +.to-pink-600{ + --tw-gradient-to: #db2777; } -.to-pink-600{ - --tw-gradient-to: #db2777 var(--tw-gradient-to-position); +.to-yellow-500{ + --tw-gradient-to: #eab308; } -.to-slate-900{ - --tw-gradient-to: #0f172a var(--tw-gradient-to-position); +.to-black{ + --tw-gradient-to: #000; } -.to-yellow-500{ - --tw-gradient-to: #eab308 var(--tw-gradient-to-position); +.to-slate-900{ + --tw-gradient-to: #0f172a; } .p-10{ padding: 2.5rem; } -.p-2{ - padding: 0.5rem; -} - .p-4{ padding: 1rem; } -.p-6{ - padding: 1.5rem; +.p-2{ + padding: 0.5rem; } -.px-1{ - padding-left: 0.25rem; - padding-right: 0.25rem; +.p-6{ + padding: 1.5rem; } .px-10{ @@ -1600,24 +1558,29 @@ video { padding-right: 2.5rem; } -.px-16{ - padding-left: 4rem; - padding-right: 4rem; +.py-4{ + padding-top: 1rem; + padding-bottom: 1rem; } -.px-2{ - padding-left: 0.5rem; - padding-right: 0.5rem; +.px-3{ + padding-left: 0.75rem; + padding-right: 0.75rem; } -.px-24{ - padding-left: 6rem; - padding-right: 6rem; +.py-2{ + padding-top: 0.5rem; + padding-bottom: 0.5rem; } -.px-3{ - padding-left: 0.75rem; - padding-right: 0.75rem; +.py-8{ + padding-top: 2rem; + padding-bottom: 2rem; +} + +.px-2{ + padding-left: 0.5rem; + padding-right: 0.5rem; } .px-4{ @@ -1625,39 +1588,39 @@ video { padding-right: 1rem; } -.px-5{ - padding-left: 1.25rem; - padding-right: 1.25rem; -} - .py-1{ padding-top: 0.25rem; padding-bottom: 0.25rem; } -.py-10{ - padding-top: 2.5rem; - padding-bottom: 2.5rem; +.py-5{ + padding-top: 1.25rem; + padding-bottom: 1.25rem; } -.py-2{ - padding-top: 0.5rem; - padding-bottom: 0.5rem; +.px-1{ + padding-left: 0.25rem; + padding-right: 0.25rem; } -.py-4{ - padding-top: 1rem; - padding-bottom: 1rem; +.px-24{ + padding-left: 6rem; + padding-right: 6rem; } -.py-5{ - padding-top: 1.25rem; - padding-bottom: 1.25rem; +.px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; } -.py-8{ - padding-top: 2rem; - padding-bottom: 2rem; +.px-16{ + padding-left: 4rem; + padding-right: 4rem; +} + +.py-10{ + padding-top: 2.5rem; + padding-bottom: 2.5rem; } .pb-3{ @@ -1672,9 +1635,14 @@ video { text-align: center; } -.text-2xl{ - font-size: 1.5rem; - line-height: 2rem; +.text-4xl{ + font-size: 2.25rem; + line-height: 2.5rem; +} + +.text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; } .text-3xl{ @@ -1682,18 +1650,13 @@ video { line-height: 2.25rem; } -.text-4xl{ - font-size: 2.25rem; - line-height: 2.5rem; -} - -.text-5xl{ - font-size: 3rem; - line-height: 1; +.text-2xl{ + font-size: 1.5rem; + line-height: 2rem; } -.text-lg{ - font-size: 1.125rem; +.text-xl{ + font-size: 1.25rem; line-height: 1.75rem; } @@ -1702,9 +1665,9 @@ video { line-height: 1.25rem; } -.text-xl{ - font-size: 1.25rem; - line-height: 1.75rem; +.text-5xl{ + font-size: 3rem; + line-height: 1; } .font-bold{ @@ -1723,29 +1686,29 @@ video { font-style: italic; } -.text-black{ +.text-slate-100{ --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity)); + color: rgb(241 245 249 / var(--tw-text-opacity)); } -.text-gray-500{ +.text-white{ --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); + color: rgb(255 255 255 / var(--tw-text-opacity)); } -.text-slate-100{ +.text-black{ --tw-text-opacity: 1; - color: rgb(241 245 249 / var(--tw-text-opacity)); + color: rgb(0 0 0 / var(--tw-text-opacity)); } -.text-slate-300{ +.text-gray-500{ --tw-text-opacity: 1; - color: rgb(203 213 225 / var(--tw-text-opacity)); + color: rgb(107 114 128 / var(--tw-text-opacity)); } -.text-white{ +.text-slate-300{ --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); + color: rgb(203 213 225 / var(--tw-text-opacity)); } .underline{ @@ -1760,6 +1723,10 @@ video { opacity: 0; } +.opacity-60{ + opacity: 0.6; +} + .opacity-40{ opacity: 0.4; } @@ -1768,27 +1735,23 @@ video { opacity: 0.5; } -.opacity-60{ - opacity: 0.6; +.opacity-90{ + opacity: 0.9; } .opacity-70{ opacity: 0.7; } -.opacity-90{ - opacity: 0.9; -} - .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-inner{ - --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color); +.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); } @@ -1798,9 +1761,9 @@ video { 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); +.shadow-inner{ + --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: inset 0 2px 4px 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); } @@ -1818,22 +1781,22 @@ video { 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-lg{ - --tw-backdrop-blur: blur(16px); +.backdrop-blur-sm{ + --tw-backdrop-blur: blur(4px); -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: 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-blur-md{ --tw-backdrop-blur: blur(12px); -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: 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-blur-sm{ - --tw-backdrop-blur: blur(4px); +.backdrop-blur-lg{ + --tw-backdrop-blur: blur(16px); -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: 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{ @@ -1992,11 +1955,6 @@ td::before{ border-color: rgb(239 68 68 / var(--tw-border-opacity)); } -.hover\:bg-blue-500:hover{ - --tw-bg-opacity: 1; - background-color: rgb(59 130 246 / var(--tw-bg-opacity)); -} - .hover\:bg-green-500:hover{ --tw-bg-opacity: 1; background-color: rgb(34 197 94 / var(--tw-bg-opacity)); @@ -2014,6 +1972,11 @@ td::before{ background-color: rgb(255 255 255 / 0.3); } +.hover\:bg-blue-500:hover{ + --tw-bg-opacity: 1; + background-color: rgb(59 130 246 / var(--tw-bg-opacity)); +} + .hover\:text-blue-400:hover{ --tw-text-opacity: 1; color: rgb(96 165 250 / var(--tw-text-opacity)); @@ -2056,24 +2019,24 @@ td::before{ margin-bottom: 0.5rem; } - .md\:mb-0{ - margin-bottom: 0px; + .md\:mr-6{ + margin-right: 1.5rem; } - .md\:mb-8{ - margin-bottom: 2rem; + .md\:mt-4{ + margin-top: 1rem; } .md\:mr-4{ margin-right: 1rem; } - .md\:mr-6{ - margin-right: 1.5rem; + .md\:mb-0{ + margin-bottom: 0px; } - .md\:mt-4{ - margin-top: 1rem; + .md\:mb-8{ + margin-bottom: 2rem; } .md\:block{ @@ -2100,14 +2063,14 @@ td::before{ width: 9rem; } - .md\:w-64{ - width: 16rem; - } - .md\:w-auto{ width: auto; } + .md\:w-64{ + width: 16rem; + } + .md\:min-w-\[60\%\]{ min-width: 60%; } @@ -2144,10 +2107,6 @@ td::before{ background-color: rgb(255 255 255 / 0.05); } - .md\:p-10{ - padding: 2.5rem; - } - .md\:p-12{ padding: 3rem; } @@ -2160,6 +2119,10 @@ td::before{ padding: 1rem; } + .md\:p-10{ + padding: 2.5rem; + } + .md\:py-5{ padding-top: 1.25rem; padding-bottom: 1.25rem; diff --git a/templates/partials/translator_badge.j2 b/templates/partials/translator_badge.j2 new file mode 100644 index 0000000..c2bc961 --- /dev/null +++ b/templates/partials/translator_badge.j2 @@ -0,0 +1,15 @@ + + + + +
+ +
+

{{user.wikidot}}

+

{{stats.points}} Překladatelských bodů

+

{{stats.count}} Přeložených článků

+

Poslední překlad: {{last.name}}

+
+
{{get_user_role(stats.points)}}
+ Powered by SCUTTLE +
\ No newline at end of file