gitdxd-theme/themes/theme-gruvbox-dark.css

411 lines
16 KiB
CSS

/*
* theme-gruvbox-dark.css
* ─────────────────────────────────────────────────────────────────────────
* Gruvbox (dark) + soft-UI for Forgejo.
*
* Palette: morhetz/gruvbox, but the accent is pulled away from the usual
* loud yellow to a calm aqua-green, with gruvbox blue for links — closer to
* the feel of a mainstream git host while staying warm and retro.
*
* Layers: built-in dark palette → neumorphism component layer → gruvbox.
*
* Drop into: <forgejo-work-path>/custom/public/assets/css/
* Then add "gruvbox-dark" to [ui].THEMES in app.ini.
*/
@import url("./_base-forgejo-dark.css");
@import url("./theme-neumorphism.css");
:root {
color-scheme: dark;
--is-dark-theme: true;
/* ── Typography ─────────────────────────────────────────────────── */
--fonts-proportional: "Inter", "SF Pro Text", -apple-system, "Segoe UI",
"Noto Sans", system-ui, sans-serif !important;
--fonts-monospace: "JetBrains Mono", "Cascadia Code", "Fira Code",
"SF Mono", "Source Code Pro", ui-monospace, "DejaVu Sans Mono",
Consolas, monospace !important;
/* ── Warm neutral ramp (dark → light) ───────────────────────────── */
--steel-900: #242322;
--steel-850: #242322;
--steel-800: #282828;
--steel-750: #2d2b29;
--steel-700: #2d2b29;
--steel-650: #383430;
--steel-600: #4a443f;
--steel-550: #5c554e;
--steel-500: #928374;
--steel-450: #a89984;
--steel-400: #bdae93;
--steel-350: #d5c4a1;
--steel-300: #d5c4a1;
--steel-250: #ebdbb2;
--steel-200: #ebdbb2;
--steel-150: #ebdbb2;
--steel-100: #fbf1c7;
/* ── Primary: calm gruvbox aqua-green (no more loud yellow) ─────── */
--color-primary: #8ec07c;
--color-primary-contrast: #1d2021;
--color-primary-dark-1: #a9d29a;
--color-primary-dark-2: #a9d29a;
--color-primary-dark-3: #c0ddb0;
--color-primary-dark-4: #c0ddb0;
--color-primary-dark-5: #d6e9c9;
--color-primary-dark-6: #d6e9c9;
--color-primary-dark-7: #e8f3e1;
--color-primary-light-1: #689d6a;
--color-primary-light-2: #427b58;
--color-primary-light-3: #427b58;
--color-primary-light-4: #376b4c;
--color-primary-light-5: #2f5f43;
--color-primary-light-6: #28513a;
--color-primary-light-7: #214531;
--color-primary-alpha-10: rgba(142, 192, 124, 0.10);
--color-primary-alpha-20: rgba(142, 192, 124, 0.20);
--color-primary-alpha-30: rgba(142, 192, 124, 0.30);
--color-primary-alpha-40: rgba(142, 192, 124, 0.40);
--color-primary-alpha-50: rgba(142, 192, 124, 0.50);
--color-primary-alpha-60: rgba(142, 192, 124, 0.60);
--color-primary-alpha-70: rgba(142, 192, 124, 0.70);
--color-primary-alpha-80: rgba(142, 192, 124, 0.80);
--color-primary-alpha-90: rgba(142, 192, 124, 0.90);
--color-primary-hover: #a9d29a;
--color-primary-active: #689d6a;
/* ── Secondary ──────────────────────────────────────────────────── */
--color-secondary: #383430;
--color-secondary-dark-1: #5c554e;
--color-secondary-dark-2: #928374;
--color-secondary-dark-3: #a89984;
--color-secondary-dark-4: #bdae93;
--color-secondary-dark-5: #d5c4a1;
--color-secondary-dark-6: #d5c4a1;
--color-secondary-dark-7: #ebdbb2;
--color-secondary-dark-8: #ebdbb2;
--color-secondary-dark-9: #ebdbb2;
--color-secondary-dark-10: #fbf1c7;
--color-secondary-dark-11: #fbf1c7;
--color-secondary-dark-12: #fbf1c7;
--color-secondary-dark-13: #fbf1c7;
--color-secondary-light-1: #4a443f;
--color-secondary-light-2: #2d2b29;
--color-secondary-light-3: #2d2b29;
--color-secondary-light-4: #282828;
--color-secondary-alpha-10: rgba(56, 52, 48, 0.10);
--color-secondary-alpha-20: rgba(56, 52, 48, 0.20);
--color-secondary-alpha-30: rgba(56, 52, 48, 0.30);
--color-secondary-alpha-40: rgba(56, 52, 48, 0.40);
--color-secondary-alpha-50: rgba(56, 52, 48, 0.50);
--color-secondary-alpha-60: rgba(56, 52, 48, 0.60);
--color-secondary-alpha-70: rgba(56, 52, 48, 0.70);
--color-secondary-alpha-80: rgba(56, 52, 48, 0.80);
--color-secondary-alpha-90: rgba(56, 52, 48, 0.90);
--color-secondary-hover: #4a443f;
--color-secondary-active: #5c554e;
/* ── Named accents ──────────────────────────────────────────────── */
--color-red: #fb4934;
--color-orange: #fe8019;
--color-yellow: #fabd2f;
--color-olive: #b8bb26;
--color-green: #b8bb26;
--color-teal: #8ec07c;
--color-blue: #83a598;
--color-violet: #b16286;
--color-purple: #d3869b;
--color-pink: #d3869b;
--color-brown: #b57614;
--color-grey: #928374;
--color-black: #1d2021;
--color-red-light: #ff6a5a;
--color-orange-light: #ff9d4d;
--color-yellow-light: #ffd35b;
--color-olive-light: #d5d94a;
--color-green-light: #d5d94a;
--color-teal-light: #a9d29a;
--color-blue-light: #a6c8bd;
--color-violet-light: #d3869b;
--color-purple-light: #e3a6b6;
--color-pink-light: #e3a6b6;
--color-brown-light: #d79921;
--color-grey-light: #a89984;
--color-black-light: #2d2b29;
--color-red-dark-1: #cc241d;
--color-orange-dark-1: #d65d0e;
--color-yellow-dark-1: #d79921;
--color-olive-dark-1: #98971a;
--color-green-dark-1: #98971a;
--color-teal-dark-1: #689d6a;
--color-blue-dark-1: #458588;
--color-violet-dark-1: #8f3f71;
--color-purple-dark-1: #b16286;
--color-pink-dark-1: #b16286;
--color-brown-dark-1: #8f6100;
--color-grey-dark-1: #7c6f64;
--color-black-dark-1: #1d2021;
--color-red-dark-2: #a5201a;
--color-orange-dark-2: #af3a03;
--color-yellow-dark-2: #b57614;
--color-olive-dark-2: #79740e;
--color-green-dark-2: #79740e;
--color-teal-dark-2: #427b58;
--color-blue-dark-2: #076678;
--color-violet-dark-2: #6b2f55;
--color-purple-dark-2: #8f3f71;
--color-pink-dark-2: #8f3f71;
--color-brown-dark-2: #6b4600;
--color-grey-dark-2: #665c54;
--color-black-dark-2: #1d2021;
--color-gold: #d79921;
--color-white: #fbf1c7;
--color-pure-black: #1d2021;
/* ── ANSI / terminal ────────────────────────────────────────────── */
--color-ansi-black: #282828;
--color-ansi-red: #cc241d;
--color-ansi-green: #98971a;
--color-ansi-yellow: #d79921;
--color-ansi-blue: #458588;
--color-ansi-magenta: #b16286;
--color-ansi-cyan: #689d6a;
--color-ansi-white: #a89984;
--color-ansi-bright-black: #665c54;
--color-ansi-bright-red: #fb4934;
--color-ansi-bright-green: #b8bb26;
--color-ansi-bright-yellow: #fabd2f;
--color-ansi-bright-blue: #83a598;
--color-ansi-bright-magenta: #d3869b;
--color-ansi-bright-cyan: #8ec07c;
--color-ansi-bright-white: #ebdbb2;
/* ── Diffs ──────────────────────────────────────────────────────── */
--color-diff-removed-word-bg: rgba(251, 73, 52, 0.30);
--color-diff-added-word-bg: rgba(184, 187, 38, 0.26);
--color-diff-removed-row-bg: rgba(251, 73, 52, 0.10);
--color-diff-moved-row-bg: rgba(254, 128, 25, 0.13);
--color-diff-added-row-bg: rgba(184, 187, 38, 0.10);
--color-diff-removed-row-border: rgba(251, 73, 52, 0.40);
--color-diff-moved-row-border: rgba(250, 189, 47, 0.40);
--color-diff-added-row-border: rgba(184, 187, 38, 0.40);
--color-diff-inactive: #2d2b29;
/* ── Status ─────────────────────────────────────────────────────── */
--color-error-border: #9d2f24;
--color-error-bg: #3d2523;
--color-error-bg-active: #4d2a26;
--color-error-bg-hover: #4d2a26;
--color-error-text: #f9c0b5;
--color-success-border: #7d8f2a;
--color-success-bg: #29331c;
--color-success-text: #d5d94a;
--color-warning-border: #d79921;
--color-warning-bg: #3f331a;
--color-warning-text: #ffd35b;
--color-info-border: #458588;
--color-info-bg: #24383a;
--color-info-text: #a6c8bd;
/* ── Badges ─────────────────────────────────────────────────────── */
--color-red-badge: #fb4934;
--color-red-badge-bg: rgba(251, 73, 52, 0.14);
--color-red-badge-hover-bg: rgba(251, 73, 52, 0.26);
--color-green-badge: #b8bb26;
--color-green-badge-bg: rgba(184, 187, 38, 0.14);
--color-green-badge-hover-bg: rgba(184, 187, 38, 0.26);
--color-yellow-badge: #fabd2f;
--color-yellow-badge-bg: rgba(250, 189, 47, 0.14);
--color-yellow-badge-hover-bg: rgba(250, 189, 47, 0.26);
--color-orange-badge: #fe8019;
--color-orange-badge-bg: rgba(254, 128, 25, 0.14);
--color-orange-badge-hover-bg: rgba(254, 128, 25, 0.26);
/* ── Thin accents / danger ──────────────────────────────────────── */
--color-thin-green: #8ec07c;
--color-thin-red: #fb4934;
--color-thin-purple: #d3869b;
--color-thin-orange: #fe8019;
--color-thin-red-highlight: #ff6a5a;
--color-danger-bg: #3d2523;
/* ── Surfaces (kept close together so the soft shadows do the work) */
--color-body: #282828;
--color-box-header: #2d2b29;
--color-box-body: #2d2b29;
--color-box-body-highlight: #383430;
--color-text-dark: #1d2021;
--color-text: #ebdbb2;
--color-text-light: #d5c4a1;
--color-text-light-1: #d5c4a1;
--color-text-light-2: #bdae93;
--color-text-light-3: #a89984;
--color-footer: #242322;
--color-timeline: #383430;
--color-input-text: #ebdbb2;
--color-input-background: #232221;
--color-input-toggle-background: #383430;
--color-input-border: #4a443f;
--color-input-border-hover: #5c554e;
--color-header-wrapper: #242322;
--color-header-wrapper-transparent: rgba(36, 35, 34, 0);
--color-light: rgba(0, 0, 0, 0.28);
--color-light-border: rgba(255, 255, 255, 0.10);
--color-hover: #383430;
--color-active: #423d38;
--color-menu: #2d2b29;
--color-card: #2d2b29;
--fancy-card-bg: #2d2b29;
--fancy-card-border: #383430;
--color-markup-table-row: rgba(255, 255, 255, 0.03);
--color-markup-code-block: #232221;
--color-markup-code-inline: #2d2b29;
--color-button: #2d2b29;
--color-code-bg: #232221;
--color-shadow: rgba(0, 0, 0, 0.45);
--color-secondary-bg: #2d2b29;
--color-text-focus: #fbf1c7;
--color-expand-button: #383430;
--color-placeholder-text: #7c6f64;
--color-editor-line-highlight: #2d2b29;
--color-project-board-bg: #2d2b29;
--color-project-board-dark-label: #a89984;
--color-caret: #8ec07c;
--color-reaction-bg: rgba(255, 255, 255, 0.06);
--color-reaction-active-bg: rgba(142, 192, 124, 0.22);
--color-reaction-hover-bg: rgba(142, 192, 124, 0.32);
--color-tooltip-text: #ebdbb2;
--color-tooltip-bg: #1d2021;
--color-nav-bg: #242322;
--color-nav-hover-bg: #383430;
--color-secondary-nav-bg: #282828;
--color-label-text: #ebdbb2;
--color-label-bg: #383430;
--color-label-hover-bg: #4a443f;
--color-label-active-bg: #5c554e;
--color-label-bg-alt: #4a443f;
--color-accent: #8ec07c;
--color-small-accent: #83a598;
--color-highlight-fg: #8ec07c;
--color-highlight-bg: rgba(142, 192, 124, 0.14);
--color-overlay-backdrop: rgba(29, 32, 33, 0.78);
--color-selection-bg: rgba(142, 192, 124, 0.30);
--color-selection-fg: #fbf1c7;
--checkerboard-color-1: #2d2b29;
--checkerboard-color-2: #232221;
--color-indicator-offline: #928374;
--color-indicator-offline-20: rgba(146, 131, 116, 0.20);
--color-indicator-idle: #b8bb26;
--color-indicator-idle-20: rgba(184, 187, 38, 0.20);
--color-indicator-active: #83a598;
--color-indicator-active-20: rgba(131, 165, 152, 0.20);
/* ── Console ────────────────────────────────────────────────────── */
--color-console-fg: #ebdbb2;
--color-console-fg-subtle: #a89984;
--color-console-bg: #1d2021;
--color-console-border: #3c3836;
--color-console-hover-bg: rgba(255, 255, 255, 0.06);
--color-console-active-bg: #504945;
--color-console-menu-bg: #3c3836;
--color-console-menu-border: #665c54;
/* ── Neumorphism primitives ─────────────────────────────────────── */
--nm-shadow-dark: rgba(0, 0, 0, 0.66);
--nm-shadow-light: rgba(255, 255, 255, 0.05);
--nm-divider-color: rgba(255, 255, 255, 0.06);
--nm-radius: 14px;
--nm-radius-sm: 10px;
}
/* ═══════════════════════════════════════════════════════════════════════
Gruvbox flavour
═══════════════════════════════════════════════════════════════════════ */
body {
background-color: #282828 !important;
color: #ebdbb2 !important;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* Links: gruvbox blue, gently shifting to the aqua accent on hover */
a { color: #83a598 !important; text-decoration: none !important; }
a:hover,
a:focus {
color: #8ec07c !important;
text-decoration: underline !important;
text-underline-offset: 2px;
}
.text.grey a,
.meta a,
.commit-header a,
.breadcrumb a,
.ui.breadcrumb a,
.sha,
.commit-sha { color: #a89984 !important; }
.text.grey a:hover,
.meta a:hover,
.commit-header a:hover,
.breadcrumb a:hover,
.ui.breadcrumb a:hover { color: #8ec07c !important; }
.navbar .brand,
.navbar .brand:hover { color: #fbf1c7 !important; font-weight: 600; }
::selection {
background: rgba(142, 192, 124, 0.30);
color: #fbf1c7;
}
/* Monospace flavour for hashes and chrome */
.sha,
.commit-sha,
.commit-id-short,
.version,
.ui.label.sha { font-family: var(--fonts-monospace) !important; }
/* Syntax highlighting — Chroma (gruvbox) */
.chroma { background: #232221 !important; }
.chroma .err { color: #fb4934; background: transparent; }
.chroma .c, .chroma .c1, .chroma .ch, .chroma .cm,
.chroma .cs, .chroma .cp, .chroma .cpf { color: #928374; font-style: italic; }
.chroma .k, .chroma .kc, .chroma .kd, .chroma .kn, .chroma .kr, .chroma .kt { color: #fb4934; }
.chroma .o, .chroma .ow { color: #fe8019; }
.chroma .p { color: #ebdbb2; }
.chroma .s, .chroma .s1, .chroma .s2, .chroma .sb, .chroma .sc, .chroma .sd, .chroma .sh, .chroma .sx { color: #b8bb26; }
.chroma .se, .chroma .ss { color: #8ec07c; }
.chroma .si, .chroma .sa { color: #fabd2f; }
.chroma .sr { color: #83a598; }
.chroma .m, .chroma .mb, .chroma .mf, .chroma .mh, .chroma .mi, .chroma .mo, .chroma .il { color: #d3869b; }
.chroma .n, .chroma .nx, .chroma .nn { color: #ebdbb2; }
.chroma .na, .chroma .nb, .chroma .bp, .chroma .nf, .chroma .ni, .chroma .nl, .chroma .py { color: #fabd2f; }
.chroma .nc, .chroma .ne, .chroma .nd, .chroma .nt { color: #8ec07c; }
.chroma .nv, .chroma .vc, .chroma .vg, .chroma .vi, .chroma .vm { color: #83a598; }
.chroma .no { color: #d3869b; }
.chroma .go { color: #928374; }
.chroma .gp { color: #a89984; }
.chroma .gh { color: #8ec07c; font-weight: bold; }
.chroma .gu { color: #b8bb26; }
.chroma .gt { color: #fb4934; }
.chroma .gd { color: #fbf1c7; background-color: #4a2420; }
.chroma .gi { color: #fbf1c7; background-color: #2f3a1c; }
/* CodeMirror */
.CodeMirror.cm-s-default .cm-keyword, .CodeMirror.cm-s-paper .cm-keyword { color: #fb4934; }
.CodeMirror.cm-s-default .cm-atom, .CodeMirror.cm-s-paper .cm-atom,
.CodeMirror.cm-s-default .cm-number, .CodeMirror.cm-s-paper .cm-number { color: #d3869b; }
.CodeMirror.cm-s-default .cm-def, .CodeMirror.cm-s-paper .cm-def { color: #8ec07c; }
.CodeMirror.cm-s-default .cm-comment, .CodeMirror.cm-s-paper .cm-comment { color: #928374; }
.CodeMirror.cm-s-default .cm-string, .CodeMirror.cm-s-paper .cm-string { color: #b8bb26; }
.CodeMirror.cm-s-default .cm-string-2, .CodeMirror.cm-s-paper .cm-string-2 { color: #fe8019; }
.CodeMirror.cm-s-default .cm-meta, .CodeMirror.cm-s-paper .cm-meta,
.CodeMirror.cm-s-default .cm-builtin, .CodeMirror.cm-s-paper .cm-builtin,
.CodeMirror.cm-s-default .cm-attribute, .CodeMirror.cm-s-paper .cm-attribute { color: #fabd2f; }
.CodeMirror.cm-s-default .cm-tag, .CodeMirror.cm-s-paper .cm-tag { color: #fb4934; }
.CodeMirror.cm-s-default .cm-link, .CodeMirror.cm-s-paper .cm-link { color: #83a598; }