Duolingo Dark Mode

Dark theme for duolingo.com

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

/* ==UserStyle==
@name           Duolingo Dark Mode
@namespace      Duolingo-Dark-Mode
@version        1.0.4
@description    Dark theme for duolingo.com
@author         Pabli
@license        CC-BY-SA-4.0
@homepageURL    https://greasyfork.org/en/scripts/415378-duolingo-dark-mode
@supportURL     https://greasyfork.org/en/scripts/415378-duolingo-dark-mode/feedback
@preprocessor   stylus
@var            color bg "Background" #141F23
@var            color bg-2 "Background 2" #202F36
@var            color border-1 "Border" #38464F
@var            color t-1 "Text 1" #F2F7FB
@var            color t-2 "Text 2" #DEE7EE
@var            color t-3 "Text 3" #52656C
@var            color t-red "Text red" #EF5F5E
@var            color t-green "Text green" #78BB30
@var            color t-blue "Text blue" #49C0F8
@var            color bg-red "Background red" #FF4B4C
@var            color bg-green "Background green" #93D334
==/UserStyle== */

@-moz-document domain("duolingo.com") {

/*
//var
bg = #141F23; //#fff
bg-2 = #202F36; //#f0f0f0 #f7f7f7 #ddf4ff
border-1 = #38464F; //#e5e5e5
t-1 = #F2F7FB; //#3c3c3c #4b4b4b
t-2 = #DEE7EE;  //#777 
t-3 = #52656C; //#999 #afafaf #38464f
t-red = #EF5F5E; //#ea2b2b  
t-green = #78BB30; //#58a700
t-blue = #49C0F8;   //#1cb0f6
bg-red = #FF4B4C;  //#ff4b4b
bg-green = #93D334; //#58cc02
bg-yellow = #FDD333;
*/


//header
#root > div > div,
#root > div > div > div {
    background-color: bg;
}
._2j1Gc, ._2V4l4 {
    background-color: bg;
    border-bottom: 2px solid border-1;
    color: t-1;
}
[style="z-index: 221;"], ._2NmyP, ._3z2Yo {
    background: rgba(28,97,130,.1) !important;
}
._-3fIQ ._2NOG7 {
    color: t-blue;
}
._2FdDp, _21W8z, ._21W8z {
    border-bottom: 2px solid border-1;
}
._2cDAr, ._37Hi-, ._21hmH, .yGEX2, .GokmT, ._7_au9, ._1ZA9g, ._3xFOm {
    color: t-1;
}
._3uAwj, ._1q9m2 p {
    color: t-2;
}
._2FdDp:hover, ._21W8z:hover {
    background-color: bg-2;
}
.ISEeS ._2nIuI, ._168wl ._3ro2R {
    border-bottom: 2px solid border-1;
    color: t-1;
}
.ISEeS .D3QAY, ._168wl ._3hI6u, 
._28B_R:first-of-type,
._3b7Vp:first-of-type,
._3GdnM {
    border-top: 2px solid border-1;
}
._28B_R, ._3b7Vp {
    border-bottom: 2px solid border-1;
}
.-qpyM, ._1cSqW {
    border-top: 2px solid border-1;
    color: t-blue;
}
._1ZA9g a {
    color: t-blue;
}
.ISEeS .G_xgk, ._168wl ._2rwos {
    background-color: bg-2;
}
.ISEeS ._2nIuI:hover, .ISEeS .D3QAY:hover, ._168wl ._2rwos:hover, ._168wl ._3ro2R:hover, ._168wl ._3hI6u:hover, .-qpyM:hover, ._1cSqW:hover {
    background-color: bg-2;
}
._1S8Vz {
    filter: brightness(50%);
}
.brXUB {
    background-color: border-1;
    color: t-3;
}
._1Q4WV, ._2nhmY, ._2iJ6U, .SaEU8 {
    background-color: bg;
    border: 2px solid border-1;
}
._3IWeV {
    color: t-3;
}
._3IWeV::after {
    background-color: bg;
    border-color: border-1;
}
//practice
[style*="color: rgb(75\, 75\, 75)"], .Mr3if {
    color: t-1 !important;
}
._399cc {
    background: bg;
    border-top: 2px solid border-1;
}
[data-test="challenge-choice-card"]::after,
.fJSw6:active:not(._326cY):not(.IACXk)::after {
    background-color: bg-2;
    border-color: t-blue;
}
._2Gskp {
    border-top: 2px solid border-1;
}
._3ANq3 > :not(:last-child) {
    border-right: 2px solid border-1;
}
._3xnDt {
    border-left: 2px solid border-1;
}
._1rooe, ._15J0U {
    border-bottom: 2px solid border-1;
}
._3lUbm, .FrL-W {
    background: bg;
}
.FrL-W {
    border: 2px solid border-1;
}
._37JAM p {
    color: t-2;
}

._34Jmg, ._1Nmv6 {
    color: t-green;
}
._3e9O1 {
    background-color: bg-2;
    color: t-green;
}
._1Ylz- {
    background-color: t-green;
    color: bg;
}
._1Ylz-::after {
    background-color: bg-green;
}
._2VrUB {
    background: bg;
}
._2KQGO::before {
    border: 4px solid bg;
}

._1O290 {
    color: t-1;
}

._1wJYQ::after {
    background-color: bg;
    border-color: border-1;
}
._2UUiS::after {
    background-color: border-1 !important;
}

.Z7UoT {
    border-color: t-blue;
    color: t-blue;
}

._3vF5k {
    background-color: bg-2;
    color: t-red;
}
.o66XQ::after {
    background-color: bg-red;
}
.o66XQ {
    background-color: t-red;
    color: bg;
}
._1sqiF, ._2tfS2 {
    color: t-red;
}

.ccZTP {
    color: t-2;
}

.u_Pxl ._34fuQ ._3c96B {
    color: t-3;
}
._2gwdz {
    border: 2px solid border-1;
}
._1eBPl:first-child ._1lcy6, ._1HxVp {
    border-top: 2px solid border-1;
}
._1eBPl ._1lcy6 {
    border-bottom: 2px solid border-1;
    border-right: 2px solid border-1;
}
._1eBPl ._1lcy6:first-of-type, .SQR8J {
    border-left: 2px solid border-1;
}
._37c8P {
    background: bg-2;
}

._2FKqf {
    background-color: bg-2;
    border-color: border-1;
}
._2ti2i {
    background: bg;
    border: 2px solid border-1;
    color: t-1;
}

._3PZWo {
    background: hsla(0, 0%, 0%, .7);
}
//background
body, #root, main, .l-V52, .XO-AE, ._2nLk_, ._3wZWk {
    background: bg ;
    color: t-1;
}

div[data-test="skill-tree"], ._2PVaI,
._17s2H, ._3f1oK {
    background: bg;
}
._3M0r3, .GVcJz, ._3izPU {
    background-color: bg-2;
}
.GVcJz, ._3M0r3, ._3izPU, 
._1jKFt::before, ._2TPZF::after {
    border: 2px solid border-1;
}

._1JPPG {
    background-image: none;
}
._1HSlC::after {
    border-color: bg;
}
[data-test="skill-popout"] > div > div:first-child,
[data-test="skill-popout"] > div > div:last-child > div {
    background-color: border-1;
    border: 2px solid bg;
}
button[data-test="start-button"],
.SSzTP .twkSI, .XmFOe .twkSI {
    color: bg;
}

[fill="#e5e5e5"] {
    fill: border-1;
}
[data-test="skill-icon"], ._1EyKG, ._1A0LT {
    background-color: border-1;
}
._1A0LT svg {
    filter:  brightness(80%);
}
img[src="//d35aaqx5ub95lt.cloudfront.net/images/fafe27c9c1efa486f49f87a3d691a66e.svg"],
img[src="//d35aaqx5ub95lt.cloudfront.net/images/ac2e0998c42f5d11a1654859511fcccd.svg"] {
    filter: brightness(70%);
}
//right panel
#root > div > div > div > div > div {
    background-color: bg;
}
._3Gj5_ , ._3ZuGY, ._2VdVL {
    background: bg;
    border: 2px solid border-1;
}
.-AHpg, ._2Inq2:not(:last-child), ._3lKd4 {
    border-bottom: 2px solid border-1;
}
._2UTWH, .mKH7H ._1_ZCT {
    color: t-green;
}
.jHo0Y, ._1xmOg ._1_ZCT {
    color: t-red;
}
._3QwaZ {
    background: border-1;
}
.yXp5g:hover {
    background: rgba(255, 255, 255, .1);
}
.YBCQI {
    color: t-1;
}
._2jQLr, ._3cvJx, ._2QnAf {
    color: t-2;
}
.OhXul, ._3blqO, ._861_w, ._15-md {
    color: t-3;
}
[src="//d35aaqx5ub95lt.cloudfront.net/images/leagues/icon_info.svg"] {
    border-radius: 50%;
    filter: brightness(80%);
}
img[src="//d35aaqx5ub95lt.cloudfront.net/images/leagues/badge_locked.svg"]{
    filter: brightness(70%);
}
._3QwaZ.mKH7H {
    background: bg;
    color: t-green;
}
._3QwaZ.mKH7H ._3cvJx {
    color: t-green;
}
._3QwaZ._1xmOg ._3cvJx {
    color: t-red;
}
._3QwaZ._1xmOg {
    background: border-1;//
    color: t-red;
}
//xp progress bar
._2cmOB {
    background: border-1;
}
//practice button, find friends buttons and socials
._3iVqs::after {
    background-color: bg;
    border-color: border-1;
}
//try plus button
.kooao {
    background: bg;
    border: 3px solid bg;
}
//text
div[data-test="skill"] > div > div > div, .Mr3if {
    color: t-1 !important;
}
h2 {
    color: t-1 !important;
}
a {
    color: t-blue;
}
._3WjRu {
    color: t-2;
}
//borders
hr, .QdeEB, ._2kTwS, ._8roiG {
    border-top: 2px solid border-1;
}
//streak freeze used
._33x5b {
    border: 2px solid border-1;
}
.RYa1p {
    color: t-2;
}
.FrL-W:hover {
    background: border-1;
}
//Achievements
._1fag1 {
    color: t-1;
}
._315yA {
    color: t-2;
}
._3iwbr {
    color: t-3;
}
._27avI {
    border-bottom: 2px solid border-1;
}

//forum discuss
._1UYQp, ._2Nbkz {
    border-bottom: 2px solid border-1;
}
._2MyXH {
    border-top: 1px solid border-1;
}
._3ZcIW, ._2VdVL h2 {
    color: t-1;
}
button[style*="background"] {
    background-color: bg !important;
    border-color: border-1 !important;
    color: t-2 !important;
}
button[style*="background: rgb(28\, 176\, 246)"] {
    background-color: t-blue !important;
}
._10HmK {
    background-color: bg;
    border: 2px solid border-1;
    color: t-1;
    caret-color: t-blue;
}
._2povu blockquote {
    border-left: 5px solid bg-2;
}
.K4oWn, .slg8x:hover {
    background-color: border-1;
}
._2LBIq, ._2I7YD, ._2D8L4 a {
    color: t-3;
}
._7SUuD {
    color: t-1;
}
._3ha9t, .TKIPn, .TKIPn:hover {
    background: bg;
}
.TKIPn, .TKIPn:hover {
    border: 2px solid border-1;
}
//twitter fb icon on the bottom
._1-HHf {
    filter: invert(1);
}
//shop
._3YYVw.k6MEx:not(._2mG9r), ._3YYVw:disabled:not(._2mG9r) {
    color: t-3;
}
._3YYVw.k6MEx:not(._2mG9r)::after, ._3YYVw:disabled:not(._2mG9r)::after,
._3YYVw::after {
    border-color: border-1;
}
._2QQA_ {
    color: t-2;
}
._2ztBJ {
    color: t-3;
}
h4 {
    color: #ff9898;
}
//stories
._2NKLU, ._1qdLM {
    color: t-1;
}
._1eZU8 {
    color: t-2;
}
._3XEH9, ._1qdLM._3N2Ph {
    color: t-3;
}
._1qdLM::after, ._1qdLM::before {
    background: border-1;
}
//settings
input[type="checkbox"] {
    background: bg;
    border: 2px solid border-1;
}
input[type="text"], textarea, #bio, #currentPassword, #password, [placeholder="Classroom code"], input#username, input#email {
    background: bg-2 !important;
    border: 2px solid border-1 !important;
    color: t-1 !important;
}
[for="username"], [for="email"], [for="enableSoundEffects"], [for="coachEnabled"], [for="enableSpeaker"], 
._1CsoA {
    color: t-1;
}
.XJIrJ{
    background: t-blue;
}
.XJIrJ::before {
    border-color: t-blue;
}
._2FbA1::before {
    background: bg;
}
._21Rik {
    background: border-1;
}
._21Rik::before {
    border-color: border-1;
}
button[data-test="save-button"]:disabled,
.yTpGk.k6MEx:not(._2mG9r), .yTpGk:disabled:not(._2mG9r) {
    color: t-3 !important;
}
.yTpGk.k6MEx:not(._2mG9r)::after, .yTpGk:disabled:not(._2mG9r)::after {
    background: border-1;
}

[data-test="image-file"] > label,
._2k8ad, _2gYJz {
    color: t-3;
}
._2gYJz {
    color: t-3;
}
._1bYwN {
    color: t-blue;
}
._1wy04, ._1oj-F {
    color: t-1;
}
._1eSrF,
.rmbzf:hover {
    background: border-1;
}

._1vUZG {
    background-color: #1899d6;
    color: bg;
}
._1vUZG::after {
    background-color: t-blue;
}
._3oNS9, ._3Ho-0 ._1dUcs {
    color: t-2;
}

._26wPn {
    color: t-1;
}
._26wPn::after {
    background-color: bg;
    border-color: border-1;
}
._1HjFK::after {
    background-color: bg-2;
    border-color: t-blue;
}
.fJSw6:hover:not(:active):not(._326cY):not(.IACXk)::after {
    background-color: bg-2;
}

//about us info
._2yr5w {
    color: t-3;
}
._2t5tt {
    border-bottom: 2px solid border-1;
}
._3OVD3, ._3OVD3:hover {
    border-bottom: 4px solid t-blue;
    color: t-blue;
}
._2peQQ, ._1ix9E, ._2a2zw, ._2_SGS, ._3A4Lv {
    color: t-2;
}
.FJh6U {
    color: t-blue;
}
._1MEMy {
    border: 2px solid border-1;
}
._2FSvr {
    color: t-1;
}

}