/*!
 * theme-frhlab-dark.css
 * Custom production dark theme for Gitea 1.27
 * Style reference: about.gitea.com, GitHub Dark, Codeberg, Forgejo Dark
 *
 * Install: <CustomPath>/public/assets/css/theme-frhlab-dark.css
 * The filename after "theme-" becomes the theme id used in app.ini:
 *   [ui]
 *   THEMES = auto,gitea,arc-green,frhlab-dark
 *   DEFAULT_THEME = frhlab-dark
 *
 * This theme only overrides Gitea's official CSS custom properties plus a
 * small number of stable, well-established selectors. No SCSS, no invalid
 * syntax, nothing that depends on internal/undocumented class names that
 * change between releases.
 */

:root {
  --is-dark-theme: true;
  --theme-display-name: "FRHLab Dark";

  /* ---------- Brand / accent (blue, like about.gitea.com) ---------- */
  --color-primary: #4d8df7;
  --color-primary-contrast: #ffffff;
  --color-primary-dark-1: #6b9ff9;
  --color-primary-dark-2: #86b1fa;
  --color-primary-dark-3: #a0c2fb;
  --color-primary-dark-4: #bad4fc;
  --color-primary-dark-5: #d3e5fd;
  --color-primary-dark-6: #e9f2fe;
  --color-primary-dark-7: #f6faff;
  --color-primary-light-1: #3d78d6;
  --color-primary-light-2: #3164b5;
  --color-primary-light-3: #275195;
  --color-primary-light-4: #1e3f74;
  --color-primary-light-5: #162c53;
  --color-primary-light-6: #0e1a30;
  --color-primary-light-7: #070d18;
  --color-primary-alpha-10: #4d8df719;
  --color-primary-alpha-20: #4d8df733;
  --color-primary-alpha-30: #4d8df74b;
  --color-primary-alpha-40: #4d8df766;
  --color-primary-alpha-50: #4d8df780;
  --color-primary-alpha-60: #4d8df799;
  --color-primary-alpha-70: #4d8df7b3;
  --color-primary-alpha-80: #4d8df7cc;
  --color-primary-alpha-90: #4d8df7e1;

  /* ---------- Secondary / neutral grays ---------- */
  --color-secondary: #2a2f3a;
  --color-secondary-dark-1: #333944;
  --color-secondary-dark-2: #3c434f;
  --color-secondary-dark-3: #454d5a;
  --color-secondary-dark-4: #4e5765;
  --color-secondary-dark-5: #5b6472;
  --color-secondary-dark-6: #838c99;
  --color-secondary-dark-7: #aeb6c2;
  --color-secondary-light-1: #21252e;
  --color-secondary-light-2: #191c23;
  --color-secondary-light-3: #14161c;
  --color-secondary-light-4: #0f1116;
  --color-secondary-light-5: #0b0d12;
  --color-secondary-light-6: #08090c;
  --color-secondary-light-7: #050607;
  --color-secondary-alpha-1: #2a2f3a19;
  --color-secondary-alpha-2: #2a2f3a33;
  --color-secondary-alpha-3: #2a2f3a4b;
  --color-secondary-alpha-4: #2a2f3a66;

  /* ---------- Status colors ---------- */
  --color-red: #f85149;
  --color-red-dark-1: #ff7b73;
  --color-red-light-1: #d9433b;
  --color-orange: #e3a13a;
  --color-orange-dark-1: #ecb75f;
  --color-orange-light-1: #c9862a;
  --color-yellow: #d4c04a;
  --color-yellow-dark-1: #e2d271;
  --color-yellow-light-1: #b6a534;
  --color-green: #3fb950;
  --color-green-dark-1: #61cd6f;
  --color-green-light-1: #2e9c3d;
  --color-blue: #4d8df7;
  --color-blue-dark-1: #6b9ff9;
  --color-blue-light-1: #3d78d6;
  --color-purple: #a475f9;
  --color-purple-dark-1: #b794fa;
  --color-purple-light-1: #8a5cf0;
  --color-pink: #f778ba;

  /* ---------- Diff colors ---------- */
  --color-diff-inline-bg: #3a2323;
  --color-diff-inline-bg-2: #3a3323;
  --color-diff-removed-word-bg: #7d2d2d;
  --color-diff-added-word-bg: #2e6e3f;
  --color-diff-removed-row-bg: #24151a;
  --color-diff-moved-row-bg: #241f0e;
  --color-diff-added-row-bg: #142d1a;
  --color-diff-removed-row-border: #6b2b2b;
  --color-diff-moved-row-border: #6b5b2b;
  --color-diff-added-row-border: #2b6b3d;

  /* ---------- Surfaces / body / boxes ---------- */
  --color-body: #0b0d12;
  --color-box-header: #12141a;
  --color-box-body: #12141a;
  --color-box-body-highlight: #171a21;
  --color-text: #e6e8eb;
  --color-text-dark: #f4f6f8;
  --color-text-light: #c4cad3;
  --color-text-light-1: #b3bac5;
  --color-text-light-2: #99a1ae;
  --color-text-light-3: #7d8896;

  /* ---------- Navbar / header / footer ---------- */
  --color-nav-bg: #0a0c10;
  --color-nav-hover-bg: #171a21;
  --color-nav-bg-blur: #0a0c10ee;
  --color-header: #0a0c10;
  --color-footer: #0a0c10;

  /* ---------- Input / form controls ---------- */
  --color-input-text: #e6e8eb;
  --color-input-background: #12141a;
  --color-input-toggle-back: #2a2f3a;
  --color-input-border: #2a2f3a;
  --color-input-border-hover: #4e5765;

  /* ---------- Misc UI ---------- */
  --color-light: #ffffff10;
  --color-light-mimic-enabled: #171a2100;
  --color-light-border: #2a2f3a;
  --color-hover: #171a21;
  --color-active: #1c1f27;
  --color-menu: #0e1015;
  --color-card: #12141a;
  --color-markup-table-row: #12141a;
  --color-markup-code-block: #171a21;
  --color-code-bg: #12141a;
  --color-code-sidebar-bg: #0e1015;
  --color-console-bg: #0b0d12;
  --color-console-fg: #e6e8eb;
  --color-console-fg-subtle: #99a1ae;
  --color-shadow: #00000066;
  --color-icon: #99a1ae;
  --color-caret: #e6e8eb;
  --color-placeholder-text: #7d8896;
  --color-editor-line-highlight: #171a21;

  /* ---------- Overlay ---------- */
  --color-overlay-backdrop: #000000b3;

  /* ---------- Label colors ---------- */
  --color-label-1: #4d8df7;
  --color-label-2: #3fb950;
}

/* =========================================================================
   Layout polish that variables alone don't cover — deliberately minimal
   and scoped to stable, long-standing selectors.
   ========================================================================= */

/* Rounded corners everywhere reasonable */
.ui.segment,
.ui.card,
.repository .repo-header,
.repository .repo-nav,
.ui.attached.table,
.ui.table,
.dashboard-navbar,
.ui.menu,
.markup pre,
.markup code,
pre.chroma,
.code-view,
.ui.input > input,
.ui.button {
  border-radius: 10px !important;
}

.ui.buttons .button,
.ui.attached.segment,
.ui.top.attached.segment,
.ui.bottom.attached.segment {
  border-radius: 8px;
}

/* Navbar — solid near-black bar, subtle bottom border, no harsh shadow */
.ui.menu.navbar {
  background-color: var(--color-nav-bg) !important;
  border-bottom: 1px solid var(--color-secondary-light-1);
  box-shadow: none;
}

.ui.menu.navbar .item {
  color: var(--color-text-light-1);
}

.ui.menu.navbar .item:hover,
.ui.menu.navbar .item.active {
  background-color: var(--color-nav-hover-bg) !important;
  color: var(--color-text-dark);
}

/* Cards / boxes: subtle border + soft shadow instead of flat lines */
.ui.segment,
.ui.card,
.repository .repo-header,
.dashboard.issue-side,
.ui.attached.segment {
  border: 1px solid var(--color-secondary-light-1);
  box-shadow: 0 1px 3px var(--color-shadow);
}

/* Repository file list / explore list rows */
.repository .repo-header,
.repo-file-list tr:hover,
.repository .repository-menu {
  background-color: var(--color-box-body);
}

/* Buttons: flatter, modern, subtle hover lift */
.ui.button {
  box-shadow: none;
  transition: background-color .15s ease, transform .1s ease;
}

.ui.primary.button {
  background-color: var(--color-primary);
  color: var(--color-primary-contrast);
}

.ui.primary.button:hover {
  background-color: var(--color-primary-light-1);
}

.ui.button:active {
  transform: translateY(1px);
}

/* Tables */
.ui.table {
  background-color: var(--color-box-body);
  border: 1px solid var(--color-secondary-light-1);
}

.ui.table thead th {
  background-color: var(--color-box-header);
  color: var(--color-text-light-1);
}

.ui.table tbody tr:hover {
  background-color: var(--color-hover) !important;
}

/* Markdown body */
.markup {
  line-height: 1.65;
}

.markup h1,
.markup h2,
.markup h3 {
  border-bottom: 1px solid var(--color-secondary-light-1);
  padding-bottom: .3em;
}

.markup blockquote {
  border-left: 3px solid var(--color-primary-light-1);
  color: var(--color-text-light-1);
  background-color: var(--color-box-body-highlight);
}

.markup table {
  border: 1px solid var(--color-secondary-light-1);
}

.markup table th {
  background-color: var(--color-box-header);
}

.markup table tr:nth-child(2n) {
  background-color: var(--color-box-body-highlight);
}

/* Code blocks / chroma highlighting container */
.markup pre,
pre.chroma,
.code-view .lines-code {
  background-color: var(--color-code-bg);
  border: 1px solid var(--color-secondary-light-1);
}

.markup code,
code.inline-code {
  background-color: var(--color-secondary-light-1);
  border-radius: 4px;
  padding: .15em .35em;
}

/* Line numbers column in code / diff views */
.lines-num {
  background-color: var(--color-code-sidebar-bg);
  color: var(--color-text-light-3);
}

/* Issue / PR labels, milestone badges keep readable contrast */
.ui.label {
  border: 1px solid var(--color-secondary-light-1);
}

/* Contribution graph / heatmap background */
#user-heatmap {
  background-color: transparent;
}

/* Scrollbars (WebKit) to match dark surface */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: var(--color-body);
}

::-webkit-scrollbar-thumb {
  background-color: var(--color-secondary-dark-2);
  border-radius: 6px;
  border: 2px solid var(--color-body);
}

::-webkit-scrollbar-thumb:hover {
  background-color: var(--color-secondary-dark-4);
}

/* Focus ring for accessibility, in-theme blue */
a:focus-visible,
button:focus-visible,
.ui.button:focus-visible,
input:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* Responsive: tighten card padding on small screens */
@media (max-width: 767.98px) {
  .ui.segment,
  .ui.card {
    border-radius: 8px !important;
  }
}
