@import "./theme-forgejo-dark-deuteranopia-protanopia.css";

@font-face {
    font-family: "Fira Code";
    src:
        local("FiraCode Nerd Font Mono"), local("FiraCodeNerdFontMono-Regular"),
        local("Fira Code"), local("FiraCode-Retina"), local("FiraCode-Regular"),
        url("../fonts/FiraCode-Regular.woff2");
    font-weight: 400;
    font-style: normal;
}

@font-face {
    font-family: "Iosevka F0xf0rge";
    src: url("../fonts/IosevkaF0xf0rge-Regular.woff2");
    font-weight: 400;
    font-style: normal;
}
@font-face {
    font-family: "Iosevka F0xf0rge";
    src: url("../fonts/IosevkaF0xf0rge-Bold.woff2");
    font-weight: 700;
    font-style: normal;
}
@font-face {
    font-family: "Iosevka F0xf0rge";
    src: url("../fonts/IosevkaF0xf0rge-Oblique.woff2");
    font-weight: 400;
    font-style: oblique;
}
@font-face {
    font-family: "Iosevka F0xf0rge";
    src: url("../fonts/IosevkaF0xf0rge-BoldOblique.woff2");
    font-weight: 700;
    font-style: oblique;
}

::selection {
    background: color-mix(in oklab, var(--foreground) 30%, #0000) !important;
    color: unset !important;
}

:root {
    --fonts-proportional: "Iosevka F0xf0rge", sans-serif !important;
    --fonts-monospace: "Fira Code", monospace !important;
}

:root {
    --background: #161918;
    --background_light: #273532;
    --background_accent: #232d28;
    --background_dark: #101111;

    --foreground: #92a3a0;
    --foreground_light: #acbcb8;
    --foreground_dark: #586d62;

    --accent: #543332;
    --accent_light: #825e5d;
    --accent_dark: #332728;

    --active: #b2483d;
    --gray: #444551;
    --links: #93a06b;

    --black: #161918;
    --black_bright: #273532;
    --red: #b2483d;
    --red_bright: #db8360;
    --green: #566d56;
    --green_bright: #93a06b;
    --yellow: #ca9859;
    --yellow_bright: #d3c096;
    --blue: #374c99;
    --blue_bright: #54a5d3;
    --magenta: #9b3d77;
    --magenta_bright: #e080be;
    --cyan: #447a6f;
    --cyan_bright: #b4dbcc;
    --white: #747c7a;
    --white_bright: #959d9e;
}

:root {
    /* overrides */
    --color-body: var(--background);

    --color-button: var(--background_light);
    --color-expand-button: var(--background_light);

    --color-label-bg: var(--background_light);
    --color-label-hover-bg: var(--background_accent);
    --color-label-text: var(--foreground_light);

    --color-box-header: var(--background);
    --color-box-body: var(--background);
    --color-box-body-highlight: var(--background_accent);

    --color-menu: var(--background_light);

    --color-text-dark: var(--foreground_dark);
    --color-text: var(--foreground);
    --color-text-light: var(--foreground_light);
    --color-text-light-1: var(--foreground_light);
    --color-text-light-2: var(--foreground_light); /* accent */

    --color-nav-bg: var(--background_dark);
    --color-nav-hover-bg: var(--background_accent);

    --color-footer: var(--background_dark);

    --color-input-text: var(--color-text);
    --color-placeholer-text: var(--gray);
    --color-input-background: var(--background_dark);
    --color-input-border: var(--background_accent);
    --color-input-toggle-background: var(--background_accent);
    --color-input-border-hover: var(--background_light);

    --color-markup-code-block: var(--background_dark);
    --color-markup-table-row: var(--background_dark);
    --color-markup-code-inline: var(--background_dark);

    --color-code-bg: var(--background_dark);

    --caret-color: var(--accent_dark);

    --color-primary: var(--green_bright);
    --color-secondary: var(--background_accent);

    --color-secondary-alpha-60: color-mix(
        in srgb-linear,
        var(--background_accent) 60%,
        #0000
    );

    --color-accent: var(--accent_dark);
    --color-hover: var(--background_accent);
    --color-active: var(--accent_dark);

    --color-black: var(--black);
    --color-red: var(--red);
    --color-green: var(--green);
    --color-yellow: var(--yellow);
    --color-blue: var(--blue);
    --color-pink: var(--magenta);
    --color-cyan: var(--cyan);
    --color-white: var(--white);
    --color-gray: var(--gray);

    --color-red-light: var(--red_bright);
    --color-yellow-light: var(--yellow_bright);
    --color-green-light: var(--green_bright);
    --color-blue-light: var(--blue_bright);
    --color-pink-light: var(--magenta_bright);
    --color-cyan-light: var(--cyan_bright);
    --color-black-light: var(--black_bright);
    --color-white-light: var(--white_bright);

    /* TODO: the brightness levels */

    /* 10% */
    --color-red-dark-1: color-mix(in oklab, var(--red), #000 10%);
    --color-green-dark-1: color-mix(in oklab, var(--green), #000 10%);
    --color-yellow-dark-1: color-mix(in oklab, var(--yellow), #000 10%);
    --color-blue-dark-1: color-mix(in oklab, var(--blue), #000 10%);
    --color-pink-dark-1: color-mix(in oklab, var(--magenta), #000 10%);
    --color-cyan-dark-1: color-mix(in oklab, var(--cyan), #000 10%);
    --color-gray-dark-1: color-mix(in oklab, var(--gray), #000 10%);

    /* 20% */
    --color-secondary-dark-2: color-mix(in oklab, var(--background_accent), #000 20%);

    --color-red-dark-2: color-mix(in oklab, var(--red), #000 20%);
    --color-green-dark-2: color-mix(in oklab, var(--green), #000 20%);
    --color-yellow-dark-2: color-mix(in oklab, var(--yellow), #000 20%);
    --color-blue-dark-2: color-mix(in oklab, var(--blue), #000 20%);
    --color-pink-dark-2: color-mix(in oklab, var(--magenta), #000 20%);
    --color-cyan-dark-2: color-mix(in oklab, var(--cyan), #000 20%);
    --color-gray-dark-2: color-mix(in oklab, var(--gray), #000 20%);

    /* activity heatmap */
    --color-primary-light-4: var(--red);
    --color-primary-light-2: color-mix(in oklab, var(--red), var(--red_bright));
    --color-primary-dark-2: color-mix(
        in oklab,
        var(--green_bright),
        var(--yellow_bright)
    );
    --color-primary-dark-4: var(--yellow_bright);
    /* TODO: code highlight theme */

    --console-color-bg: var(--background);
    --console-color-fg: var(--foreground);

    --color-ansi-black: var(--black);
    --color-ansi-red: var(--red);
    --color-ansi-green: var(--green);
    --color-ansi-yellow: var(--yellow);
    --color-ansi-blue: var(--blue);
    --color-ansi-magenta: var(--magenta);
    --color-ansi-cyan: var(--cyan);
    --color-ansi-white: var(--white);

    --color-ansi-bright-black: var(--black_bright);
    --color-ansi-bright-red: var(--red_bright);
    --color-ansi-bright-green: var(--green_bright);
    --color-ansi-bright-yellow: var(--yellow_bright);
    --color-ansi-bright-blue: var(--blue_bright);
    --color-ansi-bright-magenta: var(--magenta_bright);
    --color-ansi-bright-cyan: var(--cyan_bright);
    --color-ansi-bright-white: var(--white_bright);

    --color-diff-removed-word-bg: color-mix(
        in srgb-linear,
        var(--red_bright) 15%,
        #0000
    );
    --color-diff-moved-word-bg: color-mix(
        in srgb-linear,
        var(--blue_bright) 15%,
        #0000
    );
    --color-diff-added-word-bg: color-mix(
        in srgb-linear,
        var(--green_bright) 15%,
        #0000
    );

    --color-diff-removed-row-bg: color-mix(
        in srgb-linear,
        var(--red) 15%,
        #0000
    );
    --color-diff-moved-row-bg: color-mix(
        in srgb-linear,
        var(--blue) 15%,
        #0000
    );
    --color-diff-added-row-bg: color-mix(
        in srgb-linear,
        var(--green) 15%,
        #0000
    );

    --color-diff-removed-row-border: color-mix(
        in srgb-linear,
        var(--red) 25%,
        #0000
    );
    --color-diff-moved-row-border: color-mix(
        in srgb-linear,
        var(--blue) 15%,
        #0000
    );
    --color-diff-added-row-border: color-mix(
        in srgb-linear,
        var(--green) 25%,
        #0000
    );
    --color-diff-inactive: color-mix(in srgb-linear, var(--gray) 15%, #0000);

    --color-error-border: var(--red);
    --color-error-bg: color-mix(in oklab, var(--red) 15%, var(--background));
    --color-error-bg-active: color-mix(
        in oklab,
        var(--red_bright) 25%,
        var(--background)
    );
    --color-error-bg-hover: color-mix(
        in oklab,
        var(--red_bright) 25%,
        var(--background)
    );
    --color-error-text: var(--cyan_bright);

    --color-danger-border: var(--red);
    --color-danger-bg: var(--color-error-bg);
    --color-danger-bg-active: var(--color-error-bg-active);
    --color-danger-bg-hover: var(--color-error-bg-hover);
    --color-danger-text: var(--red);

    --color-success-border: var(--green);
    --color-success-bg: color-mix(
        in oklab,
        var(--green) 75%,
        var(--background)
    );
    --color-success-text: var(--cyan_bright);

    --color-warning-border: var(--yellow);
    --color-warning-bg: color-mix(
        in oklab,
        var(--yellow),
        var(--background)
    );
    --color-warning-text: var(--cyan_bright);

    --color-info-border: var(--blue);
    --color-info-bg: color-mix(in oklab, var(--blue) 75%, var(--background));
    --color-info-text: var(--cyan_bright);

    --color-red-badge: var(--red);
    --color-red-badge-bg: color-mix(in srgb-linear, var(--red) 15%, #0000);
    --color-red-badge-hover-bg: color-mix(
        in srgb-linear,
        var(--red) 25%,
        #0000
    );
    --color-green-badge: var(--green);
    --color-green-badge-bg: color-mix(in srgb-linear, var(--green) 15%, #0000);
    --color-green-badge-hover-bg: color-mix(
        in srgb-linear,
        var(--green) 25%,
        #0000
    );
    --color-yellow-badge: var(--yellow);
    --color-yellow-badge-bg: color-mix(
        in srgb-linear,
        var(--yellow) 15%,
        #0000
    );
    --color-yellow-badge-hover-bg: color-mix(
        in srgb-linear,
        var(--yellow) 25%,
        #0000
    );
    --color-orange-badge: var(--orange);
    --color-orange-badge-bg: color-mix(
        in srgb-linear,
        var(--orange) 15%,
        #0000
    );
    --color-orange-badge-hover-bg: color-mix(
        in srgb-linear,
        var(--orange) 25%,
        #0000
    );
}

/* more colors */

/* code view */
.code-view .lines-num,
.file-preview .lines-num {
    color: var(--accent);
}
.code-view .lines-num:hover,
.file-preview .lines-num:hover {
    color: var(--accent_light);
}

/* things that dont use global colors */

.ui.red.buttons .button,
.ui.basic.red.button,
.ui.red.button {
    color: var(--black);
}
/* mf got a stutter what the hell */
/* "stable" label on releases */
.ui.ui.ui.green.label {
    color: var(--color-label-text);
}

/* repo dangerzone */
.button.danger {
    border-color: var(--color-danger-border);
}
.button.danger:hover {
    color: var(--color-danger-text);
}

/* "im not gonna make extensive tweaks", it said... "itll be a light theme", it said... */

/* circular pfps */
img.ui.avatar,
img ui.avatar,
svg .ui.avatar {
    border-radius: 50%;
}
/* remove border around profile */
#profile-avatar-card {
    border: none;
}

/* c h r o m a */
/* yoinked straight from forgejo web_src/css/chroma/dark.css */

/* https://github.com/alecthomas/chroma/blob/6428fb4e65f3c1493491571c8a6a8f1add1da822/types.go#L208 */
.chroma .bp {
    color: var(--yellow);
} /* NameBuiltinPseudo */
.chroma .c {
    color: var(--gray);
} /* Comment */
.chroma .c1 {
    color: var(--gray);
} /* CommentSingle */
.chroma .ch {
    color: var(--gray);
} /* CommentHashbang */
.chroma .cm {
    color: var(--gray);
} /* CommentMultiline */
.chroma .cp {
    color: var(--green);
} /* CommentPreproc */
.chroma .cpf {
    color: var(--cyan);
} /* CommentPreprocFile */
.chroma .cs {
    color: var(--cyan);
} /* CommentSpecial */
.chroma .dl {
    color: var(--cyan);
} /* LiteralStringDelimiter */
.chroma .gd {
    color: var(--white_bright);
    background-color: #5f3737;
} /* GenericDeleted */
.chroma .ge {
    color: var(--yellow);
} /* GenericEmph */
.chroma .gh {
    color: var(--yellow_bright);
} /* GenericHeading */
.chroma .gi {
    color: var(--white_bright);
    background-color: #3a523a;
} /* GenericInserted */
.chroma .go {
    color: var(--gray);
} /* GenericOutput */
.chroma .gp {
    color: var(--yellow_bright);
} /* GenericPrompt */
.chroma .gr {
    color: var(--red);
} /* GenericError */
.chroma .gs {
    color: var(--yellow_bright);
} /* GenericStrong */
.chroma .gt {
    color: var(--yellow);
} /* GenericTraceback */
.chroma .gu {
    color: var(--green);
} /* GenericSubheading */
.chroma .il {
    color: var(--cyan);
} /* LiteralNumberIntegerLong */
.chroma .k {
    color: var(--yellow);
} /* Keyword */
.chroma .kc {
    color: var(--blue);
} /* KeywordConstant */
.chroma .kd {
    color: var(--cyan);
} /* KeywordDeclaration */
.chroma .kn {
    color: var(--cyan);
} /* KeywordNamespace */
.chroma .kp {
    color: #5f8700;
} /* KeywordPseudo */
.chroma .kr {
    color: var(--yellow);
} /* KeywordReserved */
.chroma .kt {
    color: var(--magenta);
} /* KeywordType */
.chroma .m {
    color: var(--blue);
} /* LiteralNumber */
.chroma .mb {
    color: var(--blue);
} /* LiteralNumberBin */
.chroma .mf {
    color: var(--blue);
} /* LiteralNumberFloat */
.chroma .mh {
    color: var(--blue);
} /* LiteralNumberHex */
.chroma .mi {
    color: var(--blue);
} /* LiteralNumberInteger */
.chroma .mo {
    color: var(--blue);
} /* LiteralNumberOct */
.chroma .n {
    color: var(--foreground);
} /* Name */
.chroma .na {
    color: var(--yellow);
} /* NameAttribute */
.chroma .nb {
    color: var(--yellow);
} /* NameBuiltin */
.chroma .nc {
    color: var(--magenta);
} /* NameClass */
.chroma .nd {
    color: var(--green);
} /* NameDecorator */
.chroma .ne {
    color: var(--yellow);
} /* NameException */
.chroma .nf {
    color: var(--blue_bright);
} /* NameFunction */
.chroma .ni {
    color: var(--yellow);
} /* NameEntity */
.chroma .nl {
    color: var(--yellow);
} /* NameLabel */
.chroma .nn {
    color: var(--magenta);
} /* NameNamespace */
.chroma .no {
    color: var(--cyan);
} /* NameConstant */
.chroma .nt {
    color: var(--yellow);
} /* NameTag */
.chroma .nv {
    color: var(--foreground);
} /* NameVariable */
.chroma .nx {
    color: var(--foreground);
} /* NameOther */
.chroma .o {
    color: var(--cyan);
} /* Operator */
.chroma .ow {
    color: var(--cyan);
} /* OperatorWord */
.chroma .p {
    color: var(--foreground);
} /* Punctuation */
.chroma .s {
    color: var(--green);
} /* LiteralString */
.chroma .s1 {
    color: var(--green);
} /* LiteralStringSingle */
.chroma .s2 {
    color: var(--green);
} /* LiteralStringDouble */
.chroma .sa {
    color: var(--yellow_bright);
} /* LiteralStringAffix */
.chroma .sb {
    color: var(--green);
} /* LiteralStringBacktick */
.chroma .sc {
    color: var(--green);
} /* LiteralStringChar */
.chroma .sd {
    color: var(--green);
} /* LiteralStringDoc */
.chroma .se {
    color: var(--yellow);
} /* LiteralStringEscape */
.chroma .sh {
    color: var(--green);
} /* LiteralStringHeredoc */
.chroma .si {
    color: var(--yellow);
} /* LiteralStringInterpol */
.chroma .sr {
    color: var(--blue);
} /* LiteralStringRegex */
.chroma .ss {
    color: var(--yellow);
} /* LiteralStringSymbol */
.chroma .sx {
    color: var(--yellow);
} /* LiteralStringOther */
.chroma .vc {
    color: var(--blue_bright);
} /* NameVariableClass */
.chroma .vg {
    color: var(--blue_bright);
} /* NameVariableGlobal */
.chroma .vi {
    color: var(--blue_bright);
} /* NameVariableInstance */
.chroma .w {
    color: var(--gray);
} /* TextWhitespace */
