/* ==UserStyle== @name Forgejoe Shades of purple @version 20241105.06.16 @namespace forgejo.css.expo.moe @description Stylesheet for Forgejo Sites (like Codeberg) that bring them into the modern era with shades of purple color scheme @author Expo, 4o1x5.dev @license MIT ==/UserStyle== */ @-moz-document domain("git.4o1x5.dev") { :root { --border-radius: 12px; --corner-radius: var(--border-radius); --steel-1000: #1a1a35; --steel-900: #15152a; --steel-850: #131327; --steel-800: #222145; --steel-750: #2a2a4a; --steel-700: #333366; --steel-650: #3d3d80; --steel-600: #474799; --steel-550: #5151b3; --steel-500: #5b5bcc; --steel-450: #6666e6; --steel-400: #7070ff; --steel-350: #7a7aff; --steel-300: #8484ff; --steel-250: #8e8eff; --steel-200: #9999ff; --steel-150: #a3a3ff; --steel-100: #adadff; --is-dark-theme: true; --color-primary: #6943ff; --color-primary-contrast: #000; --color-primary-dark-1: #5f3ae6; --color-primary-dark-2: #5533cc; --color-primary-dark-3: #4b2bb3; --color-primary-dark-4: #412299; --color-primary-dark-5: #371a80; --color-primary-dark-6: #2d1166; --color-primary-dark-7: #23094d; --color-primary-light-1: #7a5aff; --color-primary-light-2: #8e70ff; --color-primary-light-3: #a385ff; --color-primary-light-4: #b79bff; --color-primary-light-5: #ccb0ff; --color-primary-light-6: #e0c6ff; --color-primary-light-7: #f5dbff; --color-primary-alpha-10: #6943ff19; --color-primary-alpha-20: #6943ff33; --color-primary-alpha-30: #6943ff4b; --color-primary-alpha-40: #6943ff66; --color-primary-alpha-50: #6943ff80; --color-primary-alpha-60: #6943ff99; --color-primary-alpha-70: #6943ffb3; --color-primary-alpha-80: #6943ffcc; --color-primary-alpha-90: #6943ffe1; --color-primary-hover: var(--color-primary-light-1); --color-primary-active: var(--color-primary-light-2); --color-secondary: var(--steel-850); --color-secondary-dark-1: var(--steel-550); --color-secondary-dark-2: var(--steel-500); --color-secondary-dark-3: var(--steel-450); --color-secondary-dark-4: var(--steel-400); --color-secondary-dark-5: var(--steel-350); --color-secondary-dark-6: var(--steel-300); --color-secondary-dark-7: var(--steel-250); --color-secondary-dark-8: var(--steel-200); --color-secondary-dark-9: var(--steel-150); --color-secondary-dark-10: var(--steel-100); --color-secondary-dark-11: var(--steel-100); --color-secondary-dark-12: var(--steel-100); --color-secondary-dark-13: var(--steel-100); --color-secondary-light-1: var(--steel-650); --color-secondary-light-2: var(--steel-700); --color-secondary-light-3: var(--steel-750); --color-secondary-light-4: var(--steel-800); --color-secondary-alpha-10: #2b364219; --color-secondary-alpha-20: #2b364233; --color-secondary-alpha-30: #2b36424b; --color-secondary-alpha-40: #2b364266; --color-secondary-alpha-50: #2b364280; --color-secondary-alpha-60: #2b364299; --color-secondary-alpha-70: #2b3642b3; --color-secondary-alpha-80: #2b3642cc; --color-secondary-alpha-90: #2b3642e1; --color-secondary-hover: var(--color-secondary-light-1); --color-secondary-active: var(--color-secondary-light-2); /* console colors - used for actions console and console files */ --color-console-fg: #FFF; --color-console-fg-subtle: #959cab; --color-console-bg: #1f212b; --color-console-border: #383c47; --color-console-hover-bg: #ffffff16; --color-console-active-bg: #454a57; --color-console-menu-bg: #383c47; --color-console-menu-border: #5c6374; /* colors */ --color-red: #b91c1c; --color-orange: #ea580c; --color-yellow: #ca8a04; --color-olive: #91a313; --color-green: #15803d; --color-teal: #0d9488; --color-blue: #2563eb; --color-violet: #7c3aed; --color-purple: #9333ea; --color-pink: #db2777; --color-brown: #a47252; --color-grey: var(--steel-500); --color-black: #111827; /* light variants */ --color-red-light: #dc2626; --color-orange-light: #f97316; --color-yellow-light: #eab308; --color-olive-light: #839311; --color-green-light: #16a34a; --color-teal-light: #14b8a6; --color-blue-light: #3b82f6; --color-violet-light: #8b5cf6; --color-purple-light: #a855f7; --color-pink-light: #ec4899; --color-brown-light: #94674a; --color-grey-light: var(--steel-300); --color-black-light: #1f2937; /* dark 1 variants produced via Sass scale-color(color, $lightness: -10%) */ --color-red-dark-1: #a71919; --color-orange-dark-1: #d34f0b; --color-yellow-dark-1: #b67c04; --color-olive-dark-1: #839311; --color-green-dark-1: #137337; --color-teal-dark-1: #0c857a; --color-blue-dark-1: #1554e0; --color-violet-dark-1: #6a1feb; --color-purple-dark-1: #8519e7; --color-pink-dark-1: #c7216b; --color-brown-dark-1: #94674a; --color-black-dark-1: #0f1623; /* dark 2 variants produced via Sass scale-color(color, $lightness: -20%) */ --color-red-dark-2: #941616; --color-orange-dark-2: #bb460a; --color-yellow-dark-2: #ca8a04; --color-olive-dark-2: #91a313; --color-green-dark-2: #15803d; --color-teal-dark-2: #0a766d; --color-blue-dark-2: #2563eb; --color-violet-dark-2: #5c14d8; --color-purple-dark-2: #7c3aed; --color-pink-dark-2: #b11d5f; --color-brown-dark-2: #a47252; --color-black-dark-2: #111827; /* other colors */ --color-gold: #b1983b; --color-white: #ffffff; --color-diff-removed-word-bg: #783030; --color-diff-added-word-bg: #255c39; --color-diff-removed-row-bg: #432121; --color-diff-moved-row-bg: #825718; --color-diff-added-row-bg: #1b3625; --color-diff-removed-row-border: #783030; --color-diff-moved-row-border: #a67a1d; --color-diff-added-row-border: #255c39; --color-diff-inactive: var(--steel-650); --color-error-border: #783030; --color-error-bg: #5f2525; --color-error-bg-active: #783030; --color-error-bg-hover: #783030; --color-error-text: #fef2f2; --color-success-border: #1f6e3c; --color-success-bg: #1d462c; --color-success-text: #f0fdf4; --color-warning-border: #a67a1d; --color-warning-bg: #644821; --color-warning-text: #fefce8; --color-info-border: #2e50b0; --color-info-bg: #2a396b; --color-info-text: var(--steel-100); --color-red-badge: #b91c1c; --color-red-badge-bg: #b91c1c22; --color-red-badge-hover-bg: #b91c1c44; --color-green-badge: #16a34a; --color-green-badge-bg: #16a34a22; --color-green-badge-hover-bg: #16a34a44; --color-yellow-badge: #ca8a04; --color-yellow-badge-bg: #ca8a0422; --color-yellow-badge-hover-bg: #ca8a0444; --color-orange-badge: #ea580c; --color-orange-badge-bg: #ea580c22; --color-orange-badge-hover-bg: #ea580c44; --color-git: #f05133; /* target-based colors */ --color-body: var(--steel-900); --color-box-header: var(--steel-700); --color-box-body: var(--steel-750); --color-box-body-highlight: var(--steel-650); --color-text-dark: #fff; --color-text: var(--steel-100); --color-text-light: var(--steel-150); --color-text-light-1: var(--steel-150); --color-text-light-2: var(--steel-200); --color-text-light-3: var(--steel-200); --color-footer: var(--steel-1000); --color-timeline: var(--steel-650); --color-input-text: var(--steel-100); --color-input-background: var(--steel-650); --color-input-toggle-background: var(--steel-650); --color-input-border: var(--steel-550); --color-input-border-hover: var(--steel-450); --color-header-wrapper: #0000; --color-header-wrapper-transparent: #242d3800; --color-light: #00000028; --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled))); --color-light-border: #ffffff28; --color-hover: var(--steel-600); --color-active: var(--steel-650); --color-menu: var(--steel-800); --color-card: var(--steel-800); --color-markup-table-row: #ffffff06; --color-markup-code-block: var(--steel-800); --color-button: var(--steel-600); --color-code-bg: var(--steel-750); --color-code-sidebar-bg: var(--steel-600); --color-shadow: #00000060; --color-secondary-bg: var(--steel-700); --color-text-focus: #fff; --color-expand-button: #3c404d; --color-placeholder-text: var(--steel-450); --color-editor-line-highlight: var(--steel-700); --color-project-board-bg: var(--color-secondary-light-3); --color-project-board-dark-label: var(--color-text-light-3); --color-caret: var(--color-text); /* should ideally be --color-text-dark, see #15651 */ --color-reaction-bg: #ffffff12; --color-reaction-active-bg: var(--color-primary-alpha-30); --color-tooltip-text: #ffffff; --color-tooltip-bg: #000000f0; --color-nav-bg: var(--steel-800); --color-nav-hover-bg: var(--steel-600); --color-label-text: #fff; --color-label-bg: #393939; --color-label-hover-bg: #5f5f5f; --color-label-active-bg: #4c4c4c; --color-accent: var(--color-primary-light-1); --color-small-accent: var(--color-primary-light-5); --color-active-line: var(--color-primary-alpha-20); --color-overlay-backdrop: #080808c0; --standard-spacing: 2rem; accent-color: var(--color-accent); color-scheme: dark; } /* Code color */ div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.n { color: #fad000; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.s2 { color: #a5ff90; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.s { color: #a5ff90; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.c1 { color: #b362ff; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.o { color: #ff9d00; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.nx { color: #fad000; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.k { color: #ff9d00; } div.file-view.code-view table tbody tr td.lines-code.chroma code.code-inner span.kd { color: #ff9d00; } #navbar { border-bottom: none; margin-bottom: var(--standard-spacing) !important; } .dashboard-navbar { padding-left: 0 !important; padding-right: 0 !important; display: flex; align-items: center; justify-content: center; margin-bottom: var(--standard-spacing) !important; } .dashboard-navbar > .ui { width: 1280px; max-width: calc(100% - 64px); background: var(--steel-800) !important; padding: 1rem; border-radius: var(--corner-radius) !important; } .dashboard-navbar + .divider { opacity: 0; } #user-heatmap + .divider { opacity: 0; padding-top: var(--standard-spacing); } .flex-list { display: flex; flex-direction: column; gap: calc(var(--standard-spacing) / 2); } .flex-list > .flex-item { padding: calc(var(--standard-spacing) / 2) !important; background: #ffffff08; border-radius: var(--corner-radius); transition: background 0.3s; } .flex-list > .flex-item:hover { background: #ffffff11; } .flex-list > .flex-item + .flex-item { border-top-color: #1a1a1a00; } .ui.menu { border-radius: var(--corner-radius); border: #0000 none 0px; } .ui.menu:not(.secondary) > .item:first-child { border-radius: var(--corner-radius) 0 0 var(--corner-radius) !important; } .ui.menu:not(.secondary) > .item:last-child { border-radius: 0 var(--corner-radius) var(--corner-radius) 0 !important; } .ui.pagination.menu .item:last-child, .ui.compact.menu .item:last-child { border-radius: 0 var(--corner-radius) var(--corner-radius) 0; } input:hover, textarea:hover, .ui.input input:hover, .ui.form input:not([type]):hover, .ui.form select:hover, .ui.form textarea:hover, .ui.form input[type="date"]:hover, .ui.form input[type="datetime-local"]:hover, .ui.form input[type="email"]:hover, .ui.form input[type="file"]:hover, .ui.form input[type="number"]:hover, .ui.form input[type="password"]:hover, .ui.form input[type="search"]:hover, .ui.form input[type="tel"]:hover, .ui.form input[type="text"]:hover, .ui.form input[type="time"]:hover, .ui.form input[type="url"]:hover, .ui.selection.dropdown:hover, .ui.checkbox label:hover::before, .ui.checkbox label:active::before, .ui.radio.checkbox label::after, .ui.radio.checkbox input:focus ~ label::before, .ui.radio.checkbox input:checked ~ label::before, .ui.form input:not([type]), .ui.form input[type="date"], .ui.form input[type="datetime-local"], .ui.form input[type="email"], .ui.form input[type="number"], .ui.form input[type="password"], .ui.form input[type="search"], .ui.form input[type="tel"], .ui.form input[type="time"], .ui.form input[type="text"], .ui.form input[type="file"], .ui.form input[type="url"], .ui.input > input, .ui.input textarea, .ui.form textarea, .ui.selection.dropdown { border-color: #0000 !important; background: #ffffff08; transition: background 0.3s; border-radius: var(--corner-radius); } input:focus, textarea:focus, .ui.input input:focus, .ui.form input:not([type]):focus, .ui.form select:focus, .ui.form textarea:focus, .ui.form input[type="date"]:focus, .ui.form input[type="datetime-local"]:focus, .ui.form input[type="email"]:focus, .ui.form input[type="file"]:focus, .ui.form input[type="number"]:focus, .ui.form input[type="password"]:focus, .ui.form input[type="search"]:focus, .ui.form input[type="tel"]:focus, .ui.form input[type="text"]:focus, .ui.form input[type="time"]:focus, .ui.form input[type="url"]:focus, .ui.selection.dropdown:focus, .ui.checkbox input:focus ~ label::before, .ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label::before, .ui.checkbox input:checked:focus ~ label::before, .ui.radio.checkbox input:focus:checked ~ label::before, .ui.input textarea:focus, .ui.form textarea:focus { background: #fff1; border-radius: var(--corner-radius); } .ui.button, .user.profile .ui.card .extra.content > ul > li:not(:last-child), .ui.cards > .card > .extra, .ui.card > .extra { border: #0000 none 0px !important; } .ui.cards > .card > .extra, .ui.card > .extra { margin-top: 1rem; } .ui.action.input > .dropdown:last-child, .ui.action.input > .button:last-child, .ui.action.input > .buttons:last-child > .button { border-radius: 0 var(--corner-radius) var(--corner-radius) 0; } .ui.secondary.menu .item, .ui.secondary.menu .active.item { border-radius: var(--corner-radius); } .ui.secondary.pointing.menu .item { border-radius: 0; } .ui.secondary.menu { gap: calc(var(--standard-spacing) / 2); } .ui.cards > .card, .ui.card { border: #0000 none 0px; border-radius: var(--corner-radius); padding: calc(var(--standard-spacing) / 3) } .repo-list-link { padding: 12px; border-color: #0000 !important; background: #ffffff04; transition: background 0.3s; border-radius: var(--corner-radius); } .repo-list-link:hover, .repo-list-link:focus { background: #ffffff08; text-decoration: none; } .repo-owner-name-list > li:not(:last-child) { border-bottom: none !important; } .repo-owner-name-list > li:not(:first-child) { padding-top: calc(var(--standard-spacing) / 3) !important; } .repo-owner-name-list > li:first-child { padding-top: calc(var(--standard-spacing) / 2) !important; } .ui.segment, .ui.segments, .ui.attached.segment { border-color: #0000; } .ui.top.attached.header { border-radius: var(--corner-radius) var(--corner-radius) 0 0; border: 0px none #0000; } .ui.top.attached.header:not(:has(.ui.bottom.attached)) + .ui.attached.segment:last-child, [aria-label="Repository"] .ui.top.attached.header + .ui.attached.segment, .ui.bottom.attached.ui.bottom.attached { border-radius: 0 0 var(--corner-radius) var(--corner-radius); border: 0px none #0000; } .ui.button.ui.button, .ui.basic.buttons.ui.basic.buttons .button.button, .ui.basic.button.ui.basic.button{ border-radius: var(--corner-radius); } .ui.labeled.button:not([class*="left labeled"]) > .button { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } .ui.basic.label { border: #0000 none 0px; border-radius: var(--corner-radius); } .header-wrapper, #repo-topics { margin-bottom: calc(var(--standard-spacing) / 1.5); } #issue-list { margin-top: calc(var(--standard-spacing) / 2); } .ui.secondary.vertical.menu.gt-bg-transparent { background: #0000; border-radius: 0; } .ui.secondary.vertical.menu.gt-bg-transparent > a { border-radius: var(--corner-radius) !important; transition: background 0.3s; } .ui.dropdown .menu { border-radius: var(--corner-radius) !important; margin-top: 0.4rem; } .ui.selection.dropdown .menu { border-radius: 0 0 var(--corner-radius) var(--corner-radius) !important; border: none #0000 0px; } .ui.selection.dropdown .menu > .item { border: none #0000 0px; } .ui.tabular.menu { border: 0px none #0000 !important; } .ui.tabs.container + .ui.tabs.divider { opacity: 0; } .ui.tabular.menu { gap: 12px; } .ui.tabular.menu .item { border: 0px none #0000; background: #ffffff0a; transition: 0.3s; } .ui.tabular.menu .item:hover { background: #ffffff0d; } .ui.tabular.menu .active.item, .ui.tabular.menu .active.item:hover { border: 0px none #0000; background: #fff1; } .ui.tabular.menu .item.item.item.item.item.item.item.item.item.item { border-radius: var(--corner-radius) !important; } .ui.vertical.menu .header.item { background: #0000; } .ui.menu .dropdown.item:last-child:hover, .ui.menu a.item:last-child:hover, .ui.menu details.item:last-child summary:hover { border-radius: 0 0 var(--corner-radius) var(--corner-radius) !important; } .ui.menu .dropdown.item:first-child:hover, .ui.menu a.item:first-child:hover, .ui.menu details.item:first-child summary:hover { border-radius: var(--corner-radius) var(--corner-radius) 0 0 !important; } .ui.segments:not(.horizontal) > .segment:first-child { border-radius: var(--corner-radius) var(--corner-radius) 0 0 !important; } .ui.table > thead > tr:first-child > th:first-child { border-radius: var(--corner-radius) 0 0 !important; } .ui.table > thead > tr:first-child > th:last-child { border-radius: 0 var(--corner-radius) 0 0 !important; } .repository.file.list #repo-files-table tr:hover { background: #0000; } .ui.segments, .ui.table { border-radius: var(--corner-radius); } .ui.table { border: 0px none #0000; } #clipboard-btn { border-radius: 0; } #navbar .ui.secondary.menu.ui.secondary.menu.ui.secondary.menu .item { border-radius: var(--corner-radius) !important; } #repo-clone-ssh { border-radius: 0; } /* invert emojis that are hard to read otherwise */ .emoji[aria-label="check mark"], .emoji[aria-label="currency exchange"], .emoji[aria-label="TOP arrow"], .emoji[aria-label="END arrow"], .emoji[aria-label="ON! arrow"], .emoji[aria-label="SOON arrow"], .emoji[aria-label="heavy dollar sign"], .emoji[aria-label="copyright"], .emoji[aria-label="registered"], .emoji[aria-label="trade mark"], .emoji[aria-label="multiply"], .emoji[aria-label="plus"], .emoji[aria-label="minus"], .emoji[aria-label="divide"], .emoji[aria-label="curly loop"], .emoji[aria-label="double curly loop"], .emoji[aria-label="wavy dash"], .emoji[aria-label="paw prints"], .emoji[aria-label="musical note"], .emoji[aria-label="musical notes"] { filter: invert(100%) hue-rotate(180deg); } .text.green.svg { color: var(--color-green-light) !important; } i.grey.icon.icon.icon.icon { color: var(--steel-350) !important; } .ui.secondary.vertical.menu { border-radius: var(--border-radius) !important; overflow: hidden; } .ui.secondary.vertical.menu > .item { border-radius: 0 !important; } .ui.basic.primary.button.item { background-color: var(--color-active) !important; color: var(--color-text) !important; box-shadow: none !important; } .ui.red.label.notification_count, .ui.primary.label, .ui.primary.labels .label { background-color: var(--color-primary-light-3) !important; } .repository.view.issue .comment-list .code-comment + .code-comment { margin: 1.25rem 0 !important; padding-top: 1.25rem !important; border-top-color: var(--steel-650) !important; } .ui.labeled.icon.buttons > .button > .icon, .ui.labeled.icon.button > .icon { background-color: var(--color-light) !important; } #review-box .review-comments-counter { background-color: var(--color-shadow) !important; color: var(--color-white) !important; margin-left: 0.5em; } .ui.basic.labels .primary.label, .ui.ui.ui.basic.primary.label { color: var(--color-text-dark) !important; } .ui.basic.yellow.label.pending-label { background: var(--color-light) !important; } ::selection { background: var(--steel-100) !important; color: var(--color-white) !important; } }