/* Gruvbox Dark Theme for Forgejo - Official Colors */
:root {
  /* Theme mode indicator */
  --is-dark-theme: true;
  color-scheme: dark;

  /* Gruvbox Dark color palette - Official colors from gruvbox.vim */
  --gruvbox-dark0-hard: #1d2021;
  --gruvbox-dark0: #282828;
  --gruvbox-dark0-soft: #32302f;
  --gruvbox-dark1: #3c3836;
  --gruvbox-dark2: #504945;
  --gruvbox-dark3: #665c54;
  --gruvbox-dark4: #7c6f64;

  --gruvbox-gray: #928374;

  --gruvbox-light0-hard: #f9f5d7;
  --gruvbox-light0: #fbf1c7;
  --gruvbox-light0-soft: #f2e5bc;
  --gruvbox-light1: #ebdbb2;
  --gruvbox-light2: #d5c4a1;
  --gruvbox-light3: #bdae93;
  --gruvbox-light4: #a89984;

  /* Bright colors */
  --gruvbox-bright-red: #fb4934;
  --gruvbox-bright-green: #b8bb26;
  --gruvbox-bright-yellow: #fabd2f;
  --gruvbox-bright-blue: #83a598;
  --gruvbox-bright-purple: #d3869b;
  --gruvbox-bright-aqua: #8ec07c;
  --gruvbox-bright-orange: #fe8019;

  /* Neutral colors */
  --gruvbox-neutral-red: #cc241d;
  --gruvbox-neutral-green: #98971a;
  --gruvbox-neutral-yellow: #d79921;
  --gruvbox-neutral-blue: #458588;
  --gruvbox-neutral-purple: #b16286;
  --gruvbox-neutral-aqua: #689d6a;
  --gruvbox-neutral-orange: #d65d0e;

  /* Faded colors */
  --gruvbox-faded-red: #9d0006;
  --gruvbox-faded-green: #79740e;
  --gruvbox-faded-yellow: #b57614;
  --gruvbox-faded-blue: #076678;
  --gruvbox-faded-purple: #8f3f71;
  --gruvbox-faded-aqua: #427b58;
  --gruvbox-faded-orange: #af3a03;

  /* Primary colors */
  --color-primary: var(--gruvbox-bright-orange);
  --color-primary-dark-1: var(--gruvbox-neutral-orange);
  --color-primary-dark-2: var(--gruvbox-faded-orange);
  --color-primary-light-1: #fe9035;
  --color-primary-light-2: #fea851;
  --color-primary-alpha-10: rgba(254, 128, 25, 0.1);
  --color-primary-alpha-20: rgba(254, 128, 25, 0.2);
  --color-primary-alpha-30: rgba(254, 128, 25, 0.3);
  --color-primary-alpha-40: rgba(254, 128, 25, 0.4);
  --color-primary-alpha-50: rgba(254, 128, 25, 0.5);
  --color-primary-alpha-60: rgba(254, 128, 25, 0.6);
  --color-primary-alpha-70: rgba(254, 128, 25, 0.7);
  --color-primary-alpha-80: rgba(254, 128, 25, 0.8);
  --color-primary-alpha-90: rgba(254, 128, 25, 0.9);

  /* Secondary colors */
  --color-secondary: var(--gruvbox-bright-aqua);
  --color-secondary-dark-1: var(--gruvbox-neutral-aqua);
  --color-secondary-dark-2: var(--gruvbox-faded-aqua);

  /* Background colors */
  --color-body: var(--gruvbox-dark0);
  --color-box-header: var(--gruvbox-dark1);
  --color-box-body: var(--gruvbox-dark0-hard);
  --color-box-footer: var(--gruvbox-dark1);
  --color-footer: var(--gruvbox-dark1);
  --color-timeline: var(--gruvbox-dark2);
  --color-input-background: var(--gruvbox-dark1);
  --color-input-border: var(--gruvbox-dark3);
  --color-input-border-hover: var(--gruvbox-dark4);
  --color-navbar: var(--gruvbox-dark0-hard);
  --color-light: var(--gruvbox-dark1);
  --color-light-dark: var(--gruvbox-dark2);
  --color-light-border: var(--gruvbox-dark3);
  --color-hover: var(--gruvbox-dark2);
  --color-active: var(--gruvbox-dark3);
  --color-menu: var(--gruvbox-dark0-hard);
  --color-card: var(--gruvbox-dark1);
  --color-markup-table-row: var(--gruvbox-dark1);
  --color-markup-code-block: var(--gruvbox-dark0-hard);

  /* Text colors */
  --color-text: var(--gruvbox-light1);
  --color-text-dark: var(--gruvbox-light0);
  --color-text-light: var(--gruvbox-light3);
  --color-text-light-1: var(--gruvbox-light2);
  --color-text-light-2: var(--gruvbox-light3);
  --color-text-light-3: var(--gruvbox-light4);

  /* Border colors */
  --color-border: var(--gruvbox-dark3);
  --color-border-secondary: var(--gruvbox-dark2);

  /* Shadow colors */
  --color-shadow: rgba(29, 32, 33, 0.6);

  /* State colors */
  --color-error: var(--gruvbox-bright-red);
  --color-success: var(--gruvbox-bright-green);
  --color-warning: var(--gruvbox-bright-yellow);
  --color-info: var(--gruvbox-bright-blue);

  /* Link colors */
  --color-link: var(--gruvbox-bright-blue);
  --color-link-hover: var(--gruvbox-bright-aqua);

  /* Label colors */
  --color-label-text: var(--gruvbox-light0);
  --color-label-bg: var(--gruvbox-dark2);
  --color-label-hover-bg: var(--gruvbox-dark3);
  --color-label-active-bg: var(--gruvbox-dark4);

  /* Button colors */
  --color-button: var(--gruvbox-dark2);
  --color-button-hover: var(--gruvbox-dark3);
  --color-button-active: var(--gruvbox-dark4);

  /* Code colors */
  --color-code-bg: var(--gruvbox-dark0-hard);
  --color-code-sidebar-bg: var(--gruvbox-dark1);

  /* Diff colors */
  --color-diff-added-word-bg: rgba(184, 187, 38, 0.2);
  --color-diff-removed-word-bg: rgba(251, 73, 52, 0.2);
  --color-diff-added-line-bg: rgba(184, 187, 38, 0.15);
  --color-diff-removed-line-bg: rgba(251, 73, 52, 0.15);
  --color-diff-added-line-border: var(--gruvbox-bright-green);
  --color-diff-removed-line-border: var(--gruvbox-bright-red);

  /* Scrollbar colors */
  --color-scrollbar-thumb: var(--gruvbox-dark3);
  --color-scrollbar-track: var(--gruvbox-dark1);

  /* Accent colors for various elements */
  --color-accent: var(--gruvbox-bright-orange);
  --color-small-accent: var(--gruvbox-bright-yellow);

  /* Repo colors */
  --color-repo-archived-icon: var(--gruvbox-light4);

  /* Console colors */
  --color-console-fg: var(--gruvbox-light1);
  --color-console-bg: var(--gruvbox-dark0-hard);
  --color-console-border: var(--gruvbox-dark3);

  /* Markdown colors */
  --color-markdown-heading: var(--gruvbox-bright-yellow);
  --color-markdown-code-bg: var(--gruvbox-dark0-hard);
  --color-markdown-link: var(--gruvbox-bright-blue);

  /* Syntax highlighting - Gruvbox style */
  --color-syntax-comment: var(--gruvbox-gray);
  --color-syntax-keyword: var(--gruvbox-bright-red);
  --color-syntax-type: var(--gruvbox-bright-yellow);
  --color-syntax-string: var(--gruvbox-bright-green);
  --color-syntax-number: var(--gruvbox-bright-purple);
  --color-syntax-function: var(--gruvbox-bright-aqua);
  --color-syntax-variable: var(--gruvbox-bright-blue);

  /* Checkerboard pattern for transparency */
  --checkerboard-color-1: #3c3836;
  --checkerboard-color-2: #282828;

  /* Accent color for native inputs */
  accent-color: var(--color-accent);

  /* Tooltip colors */
  --color-tooltip-text: var(--gruvbox-fg0);
  --color-tooltip-bg: rgba(29, 32, 33, 0.95);

  /* Navigation colors */
  --color-nav-bg: var(--gruvbox-dark0-hard);
  --color-nav-hover-bg: var(--gruvbox-dark1);
  --color-nav-text: var(--gruvbox-light1);
  --color-secondary-nav-bg: var(--gruvbox-dark0);

  /* Overlay backdrop */
  --color-overlay-backdrop: rgba(29, 32, 33, 0.85);

  /* Highlight colors */
  --color-highlight-fg: var(--gruvbox-bright-yellow);
  --color-highlight-bg: rgba(250, 189, 47, 0.15);

  /* Editor colors */
  --color-editor-line-highlight: rgba(254, 128, 25, 0.1);
  --color-caret: var(--gruvbox-light0);

  /* Reaction colors */
  --color-reaction-bg: var(--gruvbox-dark2);
  --color-reaction-hover-bg: var(--gruvbox-dark3);
  --color-reaction-active-bg: var(--gruvbox-dark4);

  /* Badge colors */
  --color-red-badge: var(--gruvbox-bright-red);
  --color-red-badge-bg: rgba(251, 73, 52, 0.1);
  --color-red-badge-hover-bg: rgba(251, 73, 52, 0.3);
  --color-green-badge: var(--gruvbox-bright-green);
  --color-green-badge-bg: rgba(184, 187, 38, 0.1);
  --color-green-badge-hover-bg: rgba(184, 187, 38, 0.3);
  --color-yellow-badge: var(--gruvbox-bright-yellow);
  --color-yellow-badge-bg: rgba(250, 189, 47, 0.1);
  --color-yellow-badge-hover-bg: rgba(250, 189, 47, 0.3);
  --color-orange-badge: var(--gruvbox-bright-orange);
  --color-orange-badge-bg: rgba(254, 128, 25, 0.1);
  --color-orange-badge-hover-bg: rgba(254, 128, 25, 0.3);

  /* ANSI terminal colors */
  --color-ansi-black: var(--gruvbox-dark0-hard);
  --color-ansi-red: var(--gruvbox-neutral-red);
  --color-ansi-green: var(--gruvbox-neutral-green);
  --color-ansi-yellow: var(--gruvbox-neutral-yellow);
  --color-ansi-blue: var(--gruvbox-neutral-blue);
  --color-ansi-magenta: var(--gruvbox-neutral-purple);
  --color-ansi-cyan: var(--gruvbox-neutral-aqua);
  --color-ansi-white: var(--gruvbox-light2);
  --color-ansi-bright-black: var(--gruvbox-dark4);
  --color-ansi-bright-red: var(--gruvbox-bright-red);
  --color-ansi-bright-green: var(--gruvbox-bright-green);
  --color-ansi-bright-yellow: var(--gruvbox-bright-yellow);
  --color-ansi-bright-blue: var(--gruvbox-bright-blue);
  --color-ansi-bright-magenta: var(--gruvbox-bright-purple);
  --color-ansi-bright-cyan: var(--gruvbox-bright-aqua);
  --color-ansi-bright-white: var(--gruvbox-light0);
}

/* Chroma syntax highlighting - comprehensive Gruvbox support */
.chroma .bp { color: var(--gruvbox-bright-yellow); } /* Built-in Pseudo */
.chroma .c,
.chroma .c1,
.chroma .ch,
.chroma .cm { color: var(--gruvbox-gray); } /* Comments */
.chroma .cp { color: var(--gruvbox-bright-aqua); } /* Comment Preproc */
.chroma .cpf { color: var(--gruvbox-bright-blue); } /* Comment PreprocFile */
.chroma .cs { color: var(--gruvbox-bright-purple); } /* Comment Special */
.chroma .dl { color: var(--gruvbox-bright-blue); } /* String Delimiter */
.chroma .gd {
  color: var(--gruvbox-light0);
  background-color: rgba(251, 73, 52, 0.2);
} /* Generic Deleted */
.chroma .ge { color: var(--gruvbox-bright-yellow); } /* Generic Emph */
.chroma .gh { color: var(--gruvbox-bright-orange); } /* Generic Heading */
.chroma .gi {
  color: var(--gruvbox-light0);
  background-color: rgba(184, 187, 38, 0.2);
} /* Generic Inserted */
.chroma .go { color: var(--gruvbox-gray); } /* Generic Output */
.chroma .gp { color: var(--gruvbox-light1); } /* Generic Prompt */
.chroma .gr { color: var(--gruvbox-bright-red); } /* Generic Error */
.chroma .gs { color: var(--gruvbox-light1); } /* Generic Strong */
.chroma .gt { color: var(--gruvbox-bright-orange); } /* Generic Traceback */
.chroma .gu { color: var(--gruvbox-bright-green); } /* Generic Subheading */
.chroma .il { color: var(--gruvbox-bright-purple); } /* Literal Number Integer Long */
.chroma .k { color: var(--gruvbox-bright-red); } /* Keyword */
.chroma .kc { color: var(--gruvbox-bright-purple); } /* Keyword Constant */
.chroma .kd { color: var(--gruvbox-bright-red); } /* Keyword Declaration */
.chroma .kn { color: var(--gruvbox-bright-orange); } /* Keyword Namespace */
.chroma .kp { color: var(--gruvbox-bright-red); } /* Keyword Pseudo */
.chroma .kr { color: var(--gruvbox-bright-red); } /* Keyword Reserved */
.chroma .kt { color: var(--gruvbox-bright-yellow); } /* Keyword Type */
.chroma .m,
.chroma .mb,
.chroma .mf,
.chroma .mh,
.chroma .mi,
.chroma .mo { color: var(--gruvbox-bright-purple); } /* Numbers */
.chroma .n { color: var(--gruvbox-light1); } /* Name */
.chroma .na,
.chroma .nb { color: var(--gruvbox-bright-yellow); } /* Name Attribute/Builtin */
.chroma .nc { color: var(--gruvbox-bright-yellow); } /* Name Class */
.chroma .nd { color: var(--gruvbox-bright-aqua); } /* Name Decorator */
.chroma .ne { color: var(--gruvbox-bright-red); } /* Name Exception */
.chroma .nf,
.chroma .ni { color: var(--gruvbox-bright-aqua); } /* Name Function/Entity */
.chroma .nl { color: var(--gruvbox-bright-red); } /* Name Label */
.chroma .nn { color: var(--gruvbox-light1); } /* Name Namespace */
.chroma .no { color: var(--gruvbox-bright-purple); } /* Name Constant */
.chroma .nt { color: var(--gruvbox-bright-red); } /* Name Tag */
.chroma .nv { color: var(--gruvbox-bright-blue); } /* Name Variable */
.chroma .nx { color: var(--gruvbox-light2); } /* Name Other */
.chroma .o { color: var(--gruvbox-bright-orange); } /* Operator */
.chroma .ow { color: var(--gruvbox-bright-red); } /* Operator Word */
.chroma .p { color: var(--gruvbox-light2); } /* Punctuation */
.chroma .s,
.chroma .s1,
.chroma .s2 { color: var(--gruvbox-bright-green); } /* Strings */
.chroma .sa { color: var(--gruvbox-bright-orange); } /* String Affix */
.chroma .sb { color: var(--gruvbox-bright-green); } /* String Backtick */
.chroma .sc { color: var(--gruvbox-bright-orange); } /* String Char */
.chroma .sd { color: var(--gruvbox-bright-green); } /* String Doc */
.chroma .se { color: var(--gruvbox-bright-orange); } /* String Escape */
.chroma .sh { color: var(--gruvbox-bright-green); } /* String Heredoc */
.chroma .si { color: var(--gruvbox-bright-orange); } /* String Interpol */
.chroma .sr { color: var(--gruvbox-bright-aqua); } /* String Regex */
.chroma .ss { color: var(--gruvbox-bright-orange); } /* String Symbol */
.chroma .sx { color: var(--gruvbox-bright-orange); } /* String Other */
.chroma .vc,
.chroma .vg,
.chroma .vi { color: var(--gruvbox-bright-blue); } /* Variables */
.chroma .w { color: var(--gruvbox-gray); } /* Whitespace */

/* CodeMirror syntax highlighting */
.CodeMirror.cm-s-default .cm-property,
.CodeMirror.cm-s-paper .cm-property { color: var(--gruvbox-bright-aqua); }
.CodeMirror.cm-s-default .cm-header,
.CodeMirror.cm-s-paper .cm-header { color: var(--gruvbox-bright-yellow); }
.CodeMirror.cm-s-default .cm-quote,
.CodeMirror.cm-s-paper .cm-quote { color: var(--gruvbox-bright-green); }
.CodeMirror.cm-s-default .cm-keyword,
.CodeMirror.cm-s-paper .cm-keyword { color: var(--gruvbox-bright-red); }
.CodeMirror.cm-s-default .cm-atom,
.CodeMirror.cm-s-paper .cm-atom { color: var(--gruvbox-bright-purple); }
.CodeMirror.cm-s-default .cm-number,
.CodeMirror.cm-s-paper .cm-number { color: var(--gruvbox-bright-purple); }
.CodeMirror.cm-s-default .cm-def,
.CodeMirror.cm-s-paper .cm-def { color: var(--gruvbox-light0); }
.CodeMirror.cm-s-default .cm-variable-2,
.CodeMirror.cm-s-paper .cm-variable-2 { color: var(--gruvbox-bright-aqua); }
.CodeMirror.cm-s-default .cm-variable-3,
.CodeMirror.cm-s-paper .cm-variable-3 { color: var(--gruvbox-bright-blue); }
.CodeMirror.cm-s-default .cm-comment,
.CodeMirror.cm-s-paper .cm-comment { color: var(--gruvbox-gray); }
.CodeMirror.cm-s-default .cm-string,
.CodeMirror.cm-s-paper .cm-string { color: var(--gruvbox-bright-green); }
.CodeMirror.cm-s-default .cm-string-2,
.CodeMirror.cm-s-paper .cm-string-2 { color: var(--gruvbox-bright-orange); }
.CodeMirror.cm-s-default .cm-meta,
.CodeMirror.cm-s-paper .cm-meta,
.CodeMirror.cm-s-default .cm-qualifier,
.CodeMirror.cm-s-paper .cm-qualifier { color: var(--gruvbox-bright-orange); }
.CodeMirror.cm-s-default .cm-builtin,
.CodeMirror.cm-s-paper .cm-builtin { color: var(--gruvbox-bright-yellow); }
.CodeMirror.cm-s-default .cm-bracket,
.CodeMirror.cm-s-paper .cm-bracket { color: var(--gruvbox-light3); }
.CodeMirror.cm-s-default .cm-tag,
.CodeMirror.cm-s-paper .cm-tag { color: var(--gruvbox-bright-red); }
.CodeMirror.cm-s-default .cm-attribute,
.CodeMirror.cm-s-paper .cm-attribute { color: var(--gruvbox-bright-aqua); }
.CodeMirror.cm-s-default .cm-hr,
.CodeMirror.cm-s-paper .cm-hr { color: var(--gruvbox-gray); }
.CodeMirror.cm-s-default .cm-url,
.CodeMirror.cm-s-paper .cm-url { color: var(--gruvbox-bright-blue); }
.CodeMirror.cm-s-default .cm-link,
.CodeMirror.cm-s-paper .cm-link { color: var(--gruvbox-bright-aqua); }
.CodeMirror.cm-s-default .cm-error,
.CodeMirror.cm-s-paper .cm-error { color: var(--gruvbox-bright-red); }

/* Dark mode image handling */
.markup [src$="#gh-light-mode-only"],
.markup [src$="#light-mode-only"],
.markup [href$="#gh-light-mode-only"],
.markup [href$="#light-mode-only"] {
  display: none;
}

.markup [src$="#gh-dark-mode-only"],
.markup [src$="#dark-mode-only"],
.markup [href$="#gh-dark-mode-only"],
.markup [href$="#dark-mode-only"] {
  display: unset;
}

/* Emoji dark mode fixes */
.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);
}

/* Additional overrides for better Gruvbox aesthetics */
body {
  background-color: var(--gruvbox-dark0);
  color: var(--gruvbox-light1);
}

/* Header styling */
.ui.header {
  color: var(--gruvbox-light0);
}

/* Menu styling */
.ui.menu {
  background: var(--gruvbox-dark1);
  border-color: var(--gruvbox-dark3);
}

.ui.menu .item {
  color: var(--gruvbox-light2);
}

.ui.menu .active.item {
  background: var(--gruvbox-dark2);
  color: var(--gruvbox-light0);
}

/* Card styling */
.ui.card,
.ui.cards > .card {
  background: var(--gruvbox-dark1);
  border-color: var(--gruvbox-dark3);
}

/* Button styling */
.ui.button {
  background: var(--gruvbox-dark2);
  color: var(--gruvbox-light1);
}

.ui.primary.button {
  background: var(--gruvbox-bright-orange);
  color: var(--gruvbox-dark0);
}

.ui.button:hover {
  background: var(--gruvbox-dark3);
}

.ui.primary.button:hover {
  background: var(--gruvbox-neutral-orange);
}

/* Input styling */
.ui.input > input,
.ui.form input[type="text"],
.ui.form input[type="password"],
.ui.form input[type="email"],
.ui.form textarea {
  background: var(--gruvbox-dark1);
  border-color: var(--gruvbox-dark3);
  color: var(--gruvbox-light1);
}

.ui.input > input:focus,
.ui.form input:focus,
.ui.form textarea:focus {
  border-color: var(--gruvbox-bright-orange);
}

/* Segment styling */
.ui.segment {
  background: var(--gruvbox-dark1);
  border-color: var(--gruvbox-dark3);
}

/* Code block styling */
pre,
code {
  background: var(--gruvbox-dark0-hard);
  color: var(--gruvbox-light1);
}

/* Table styling */
.ui.table {
  background: var(--gruvbox-dark1);
  border-color: var(--gruvbox-dark3);
  color: var(--gruvbox-light1);
}

.ui.table thead th {
  background: var(--gruvbox-dark2);
  color: var(--gruvbox-light0);
}

.ui.table tbody tr {
  border-color: var(--gruvbox-dark3);
}

.ui.table tbody tr:hover {
  background: var(--gruvbox-dark2);
}

/* Label styling */
.ui.label {
  background: var(--gruvbox-dark2);
  color: var(--gruvbox-light1);
  border-color: var(--gruvbox-dark3);
}

/* Dropdown styling */
.ui.dropdown .menu {
  background: var(--gruvbox-dark1);
  border-color: var(--gruvbox-dark3);
}

.ui.dropdown .menu > .item {
  color: var(--gruvbox-light2);
}

.ui.dropdown .menu > .item:hover {
  background: var(--gruvbox-dark2);
  color: var(--gruvbox-light0);
}
