WaniKani Basic Darkmode script

Basic Darkmode Script that syncs with your darkmode system preferences (modified from aquasurge7)

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         WaniKani Basic Darkmode script
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Basic Darkmode Script that syncs with your darkmode system preferences (modified from aquasurge7)
// @author       albertusdev
// @match        https://www.wanikani.com/*
// @match        https://preview.wanikani.com/*
// @run-at       document-start
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license    MIT
// ==/UserScript==

const darkModeCss = `
body {
    color:#fff;
    background-blend-mode:color-burn;
    background-color:#222;
}

p, ol, figcaption, .body-copy, .body-copy li {
    text-shadow: 0 1px 0 #000;
}

h1, html#public-profile div.wall-of-shame div.title, h2, h3 {
    text-shadow: 0 1px 0 #000;
}

#main footer {
    background-image: url(https://raw.githubusercontent.com/misabiko/Wanikani-Grayish-Blueish-Dark/master/Assets/footer-bg-invert.gif) !important;
    background-position: top !important;
}

.text-black {
    --tw-text-opacity: 1;
    color: rgba(255,255,255,var(--tw-text-opacity));
}

.sitemap__section-header {
    color:#fff;
    text-shadow:0 1px 0 #000;
}

.global-header{
    background-image:none;
    background-color:#111;
}

.community-banner {
    background-color:#333;
    border:none;
}

.community-banner__link {
    color:#fff;
}

.community-banner__link:hover {
    color:#fff
}

.community-banner__text, .community-banner__cta, .community-banner__title {
    text-shadow:0 1px 0 #000;
}

.global-header {
    border-bottom: 1px solid #555;
}

.dashboard section.forecast {
    background-color:#333;
}

.dashboard section.dashboard-progress, .dashboard section.forecast, .dashboard section.newbie, .dashboard section.upgrade, .dashboard section.system-alert, .dashboard section.alert-where-user-scripts-cant-ignore, .community-banner, .dashboard-panel {
    box-shadow: 0 1px 0 #2A2A2A;
}

.review-forecast__day.is-collapsed .review-forecast__day-header {
    color:#333
}

.forecast * {
    color:#fff;
}

.bg-white {
    background-color:#444;
}

.review-forecast__day-header::before {
    background-color: rgba(51,51,51,var(--tw-bg-opacity));
}

.dashboard section.dashboard-progress {
    background-color:#333;
}

.sm\:w-full {
    filter: invert(73.5%);
}

.fa-magnifying-glass::before, .fa-search::before {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

button#search__trigger.hover\:border-transparent-1:hover {
    background-color:#0000;
    border-color:rgba(255, 255, 255, 0.2);
}

button#search__trigger.hover\:border-transparent-3:hover {
    background-color:#0000;
    border-color:rgba(255,255,255,.4);
}

button#search__trigger.hover\:border-transparent-1 {
    color:#0000;
    background-color:#0000;
    border-color:#0000
}

button#search__trigger.hover\:border-transparent-3 {
    color:#0000;
    background-color:#0000;
    border-color:#0000
}

.navigation-shortcut__button {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    border: 2px solid rgba(255, 255, 255, 0.2);
}

.navigation-shortcut__button:hover {
    color:#fff;
    border-color:rgba(255, 255, 255, .4);
}

.navigation-shortcut__button:focus {
    color:#fff;
}

section.srs-progress ul li:first-child {
    box-shadow: 0 1px 0 #dd0093;
}

section.srs-progress ul li:nth-child(2) {
    box-shadow: 0 1px 0 #882d9e;
}

section.srs-progress ul li:nth-child(3) {
    box-shadow: 0 1px 0 #294ddb;
}

section.srs-progress ul li:nth-child(4) {
    box-shadow: 0 1px 0 #0093dd;
}

section.srs-progress ul li:last-child {
    box-shadow: 0 1px 0 #434343;
}

.dashboard-sub-section h3 {
    color:#fff;
    text-shadow:0 1px 0 #000;
    background-color:#333;
}

.dashboard section.dashboard-sub-section div.see-more {
    background-color:#333;
    box-shadow: 0 1px 0 #2A2A2A;
}

.dashboard section.dashboard-sub-section a.small-caps {
    color:#eee;
    text-shadow: 0 1px 0 #000;
}

.dashboard section.dashboard-sub-section a.small-caps:hover {
    color: #999;
}

.kotoba-table-list table tr.none-available {
    background-color:#333;
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.kotoba-table-list table tr.none-available div {
    border: 5px solid #fff;
    box-shadow:0 1px 0 #2A2A2A;
}

.sitemap__section-header:hover {
    border-color:rgba(255, 255, 255, .2)
}

.sitemap__section-header:focus{
    border-color:rgba(255, 255, 255, .4)
}

.sitemap__section-header[data-expanded="true"] {
    border-color:rgba(255,255,255,.4);
}

.sitemap__section-header--vocabulary:hover {
    border-color:rgba(170,0,255,0.25);
}

.sitemap__section-header--kanji:hover {
    border-color:rgba(255,0,170,0.25);
}

.sitemap__section-header--radicals:hover {
    border-color:rgba(0,170,255,0.25);
}

.sitemap__expandable-chunk > :first-child {
    background-color:#222;
}

.sitemap__pages--levels .sitemap__page a {
    background-color:#333;
}

ul.sitemap__pages.sitemap__pages--radical{
    background-color:#00AAFF;
}

ul.sitemap__pages.sitemap__pages--kanji{
    background-color:#FF00AA;
}

ul.sitemap__pages.sitemap__pages--vocabulary{
    background-color:#AA00FF;
}

.sitemap__section-header--radicals:focus {
    border-color:#00AAFF;
}

.sitemap__section-header--kanji:focus {
    border-color:#FF00AA;
}

.sitemap__section-header--vocabulary:focus {
    border-color:#AA00FF
}

.search-form form .search-query {
    color:#fff;
    background-color:#111;
}

button.flex-initial.rounded.bg-gray-500.text-white.font-bold.border-0.px-3.py-1 {
    background-color:#333;
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.7);
}

button.flex-initial.rounded.bg-gray-500.text-white.font-bold.border-0.px-3.py-1:hover {
    background-color:#444;
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.7);
}

button.flex-initial.rounded.bg-gray-500.text-white.font-bold.border-0.px-3.py-1:focus {
    box-shadow:none;
}

.text-gray-800 {
    color:#fff;
    text-shadow:#000
}

.text-blue-500 {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.text-blue-500:hover {
    color:#999;
}

.border-blue-300 {
    border-color:#eee;
}

*, ::after, ::before {
    --tw-ring-color: rgba(59,130,246,0.0);
}

.bg-gray-300 {
    background-color:#2A2A2A;
}

a:focus {
    color:#fff;
}

.sitemap__section-header--radicals[data-expanded="true"], .sitemap__section-header--radicals:focus {
    outline: none;
    border-color: #00AAFF;
}

.sitemap__section-header--kanji[data-expanded="true"], .sitemap__section-header--kanji:focus {
    outline: none;
    border-color: #FF00AA;
}

.sitemap__section-header--vocabulary[data-expanded="true"], .sitemap__section-header--vocabulary:focus {
    outline: none;
    border-color: #AA00FF;
}

.disabled\:text-gray-700:disabled {
    color:#fff;
}

button.border.border-solid:hover {
    color: #fff;
    background-color: #fff0;
    border-color: #888;
}

.sitemap__page--login a{
    color:#fff;
}

/* Page: Levels */

.character-grid__header {
    color:#fff;
    text-shadow:0 1px 0 #000;
    background-color:#333;
}

.progress-bar__bar {
    background-image: linear-gradient(to bottom, #555, #333);
}

.progress-bar {
    background-color: #2A2A2A;
}

.subject-legend {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
}

.subject-legend__title {
    color:#fff;
}

.page-header__title {
    text-shadow: 0 1px 0 #000;
}

.page-nav {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.page-nav__item-link{
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color: #333;
    border: 1px solid #333;
}

.page-nav__item-link:hover {
    color:#000;
    text-shadow: 0 1px 0 #fff;
    background-color:#ccc;
    border: 1px solid #ccc;
    transition: color ease-out .1s,background-color ease-out .1s, border ease-out .1s;
}

.page-nav__item-link, .page-nav__item-link:visited {
    color: white;
}

.page-nav__item-link:hover {
    color:#000;
}

.navigation-shortcut__link {
    border: 2px solid rgba(255, 255, 255, 0.2);
    color:#fff;
}

.navigation-shortcut__link:hover {
    border-color: rgba(255,255,255,0.4);
}

.search-button {
    border-color:rgb(17, 17, 17);
    transition: border-color ease-out .15s;
}

.search-button:hover {
    border-color:rgba(255,255,255,0.2);
    transition: border-color ease-in .15s;
}

.search-button__icon {
    flex: 0 0 auto;
    font-size: 16px;
    padding: 0 1px 0 0;
}

.footer {
    background-image: url(https://raw.githubusercontent.com/misabiko/Wanikani-Grayish-Blueish-Dark/master/Assets/footer-bg-invert.gif) !important;
    background-position: top !important;
}

/* Page: Radicals */

.subject-pager__item-link, .subject-pager__item-link:visited {
    color:#ccc;
    text-shadow: 0 1px 0 #000;
}

.subject-section__title {
    text-shadow: 0 1px 0 #000;
}

.user-synonyms__button, .user-synonyms__button:visited, .user-synonyms__button:focus {
    color:#fff;
    background-color:#333;
    text-shadow: 0 2px 0 #000;
}

.user-synonyms__button:hover {
    color: #ccc;
}

.user-synonyms__form-input {
    color:#fff;
    background-color:#111;
    border: 1px solid #333;
}

.subject-section__subtitle {
    text-shadow: 0 1px 0 #000;
}

.subject-section__text {
    text-shadow: 0 1px 0 #000;
}

.subject-progress {
    text-shadow: 0 1px 0 #000;
}

.subject-progress__button {
    color:#fff;
    border: 1px solid #444;
    background-image: linear-gradient(to bottom, #333, #111);
    box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);
}

.subject-progress__button:hover {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-image: linear-gradient(to bottom, #444, #222);
}

.subject-progress__button:focus {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}


.subject-progress__streak-value {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#555;
}

.user-note__input {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
}

.user-note__footer {
    background-color:#444;
}

.user-note__button, .user-note__button:visited, .user-note__button:active, .user-note__button:focus {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.user-note__button:hover {
    color:#ccc;
}

.user-note__character-count-text {
    color:#aaa;
    text-shadow: 0 1px 0 #000;
}

.fa-pencil-alt::before, .fa-pencil::before {
    color:#aaa;
    text-shadow: 0 1px 0 #000;
}

.user-note__link, .user-note__link:visited {
    color:#999 !important;
}

.user-note__link:hover {
    color:#777 !important;
}

.subject-pager__item-link:hover {
    color: #888;
}

fieldset.user-note__fields {
    background-color:#444;
}

.user-synonyms__form-input:focus {
    border-color:rgba(255,255,255,0.8);
    box-shadow:0 0 8px rgba(255,255,255,0.6)
}

.user-synonym, .user-synonym:visited {
    color:#fff;
    text-shadow: 0 2px 0 #000;
    background-color:#0000;
}

.user-synonym:hover, .user-synonym:focus {
    color:#fff;
}

.user-synonym__delete-icon {
    color:#fff;
    text-shadow: 0 2px 0 #000;
    background-color:#444;
}

.user-synonym__delete-icon:hover {
    color:#dc2626
}

.alert-info {
    color: #fff;
    text-shadow: 0 1px 0 #000;
    background-color: #ffffff17;
}

.alert-close {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.alert-close:hover {
    color:#666;
}

.alert-close:focus {
    color:#666;
}

.search__query {
    color:#fff;
    background-color:#111;
}

.search__button {
    background-color:#333;
    box-shadow: 1px 1px 1px rgba(0,0,0,0.7)
}

.search__button:hover {
    background-color:#444;
    box-shadow: 1px 1px 1px rgba(0,0,0,0.7);
    cursor:pointer;
}

.search__button:focus {
    box-shadow:none;
}

/* Page: Kanji */

.component-character__meaning {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.subject-hint {
    color:#fff;
    background-color:#333;
}

.subject-hint__title {
    color:#ddd;
    text-shadow: 0 1px 0 #000;
}

.components-list__item::after {
    text-shadow: 0 1px 0 #000;
}

.subject-readings__reading-title {
    text-shadow: 0 1px 0 #000;
}

.turbo-progress-bar {
    background:#fff;
}

/* Page: Vocabulary */

.subject-readings-with-audio {
    text-shadow: 0 1px 0 #000;
}

.subject-collocations__title {
    text-shadow: 0 1px 0 #000;
}

.subject-collocations__pattern-name {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#222;

}

.subject-collocations__pattern-name:hover {
    background-color: #333;
    text-shadow: 0 1px 0 #000;
}

.subject-collocations__pattern-name[aria-selected="true"] {
    color:#fff;
    text-shadow: 0 1px 0#000;
    background-color:#444;
}

.subject-collocations__pattern-name[aria-selected="true"]::after {
    background-color:#444;
}

/* Page: Contact Us */

input#subject, textarea#body, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color: #111;
    border: 1px solid #ccc;
}

input#subject:focus, textarea#body:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus, textarea#user_about:focus {
    border-color:rgba(255, 255, 255, .8);
    box-shadow:0 0 8px rgba(255,255,255,0.6)
}

input#attachment {
    color-scheme: dark;
}

.btn {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background:#333;
    border-color:#2A2A2A;
    box-shadow: inset 0 1px 0 rgb(68, 68, 68), 0 1px 2px rgb(42, 42, 42);
}

.btn:hover {
    color:#000;
    text-shadow: 0 1px 0 #fff;
    background:#ccc;
    border-color:#d4d4d4;
    box-shadow: inset 0 0px 0 rgb(153, 153, 153), 0 1px 2px rgb(204, 204, 204);
}

.btn:focus {
    color:#000;
    text-shadow: 0 1px 0 #fff;
    background:#ccc;
    border-color:#d4d4d4;
    box-shadow:none;
}

.alert, .error {
    color: #fff;
    text-shadow: 0 1px 0 #000;
    background-color: #ffffff17;
    border:none;
}

::selection {
    background:#666
}

/* Page: Profile */

html#public-profile div.wall-of-shame {
    background-color:#2220;
}

html#public-profile div.wall-of-shame ul li > span:first-child {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

div.chart {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

html#public-profile div.wall-of-shame .progress {
    background-color:#2A2A2A;
    background-image:none;
}

.progress {
    background-color:#2A2A2A;
}

html#public-profile div.wall-of-shame h3 span {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
    box-shadow: inset 0 5px 5px rgba(0,0,0,0.0),0 1px 0 rgba(42,42,42,1);
}

html#public-profile footer {
    background-image: url("https://raw.githubusercontent.com/misabiko/Wanikani-Grayish-Blueish-Dark/master/Assets/footer-bg-invert.gif") !important;
    background-position: top !important;
}

html#public-profile .public-profile-header div.user-info {
    background-image: linear-gradient(to bottom, #222, #111);
    box-shadow: inset 0 15px 15px -15px rgba(0,0,0,0.9),inset 0 -15px 15px -15px rgba(0,0,0,0.9);
}

html#public-profile .public-profile-header div.user-info div[class*="span"] {
    text-shadow: 0 1px 0 #000;
}

html#public-profile .public-profile-header div.user-info h3.small-caps {
    color:#999;
    text-shadow: 0 1px 0 #000;
}

/* Page: Settings - App */

.page-list ul {
    background-color:#222;
    padding-top: 4px;
}

.page-list ul > li > a, .page-list ul > li > span {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
    border-color:#222;
}

.page-list ul > li > a:hover {
    color:#000;
    text-shadow: 0 1px 0 #fff;
    background-color:#ccc;
    border-color: #ccc;
    transition: color ease-out .1s,background-color ease-out .1s, border ease-out .1s;
}

.page-list ul > li.active a {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#555;
}

.page-list ul > li.active a:hover {
    color:#000;
    text-shadow: 0 1px 0 #fff;
    background-color:#ccc;
    border-color:#ccc;
    transition: color ease-out .1s,background-color ease-out .1s, border ease-out .1s;
}

.settings-section {
    background-color:#333;
    box-shadow: inset 0 -1px 1px #2a2a2a;
}

form label {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

aside {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.account-settings form.form-auto-submit-on-select-change select {
    color:#fff;
    background-color: #1A1A1A;
    border-color:#555;
}

/* Page: Terms */

.short-version {
    background-color:#333;
}

/* Page: Settings - Account */

/* Page: Settings - API */

.wk-modal__window {
    color:#fff;
    background-color:#2A2A2A;
}

h2 {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

code {
    background-color:#111;
    border: 1px solid #555;
}

.wk-modal__close {
    color:#ccc;
    text-shadow: 0 1px 0 #000;
}

.wk-modal__close:hover {
    color:#888;
}

.personal-access-token-permission__description {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.personal-access-token-permissions__namespace-header {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.personal-access-token-permission__label {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

/* Page: Settings - Profile */

textarea#user_about {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#111;
    border: 1px solid #ccc;
}

/* Page: Settings - Danger Zone */

select#user_reset_target_level {
    color:#fff;
    background-color:#1A1A1A;
    border-color:#555;
}

button.btn.btn-danger {
    background-color:#bd362f;
}

button.btn.btn-danger:hover {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    box-shadow:none;
}

button.btn.btn-danger:focus {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}


/* Page: Subscription */

.bg-gray-100 {
    background-color:#333;
}

a.border-solid {
    color:#fff;
    background-color:#4a4a4a;
    border-color:#888
}

a.border-solid:hover {
    color:#fff;
    background-color:#5a5a5a;
    border-color:#999
}

button.border-solid {
    color:#fff;
    background-color:#4a4a4a;
    border-color:#888
}

button.border-solid:hover {
    color:#fff;
    background-color:#5a5a5a;
    border-color:#999;
}

dt.box-border {
    color:#fff;

}

dd.box-border {
    color:#fff;
}

/* Page: Sign In */

#explanation .bg-angled {
    background-color:#222;
}

#explanation h2 {
    color:#888;
}

button.button {
    color:#ccc;
    border-color:#ccc;
}

button.button:hover {
    color:#fff;
    border-color:#fff;
}

/* Page: Reviews */

.additional-content__item {
    color: #ccc;
    background-color: #2a2a2a;
    box-shadow: 2px 2px 4px #161616;
    border: 1px solid #0000;
}

.additional-content__item--disabled {
    background-color: #222;
    box-shadow: 3px 3px 0 #161616;
    color: #ccc;
}

.quiz-input__input {
    box-shadow: 3px 3px 0 #161616;
}

input#user-response.quiz-input__input {
    color:#ccc;
    background-color:#2A2A2A;
    border:none;
}

input#user-response.quiz-input__input:focus {
    color:#fff;
    box-shadow: 3px 3px 0 #161616;
}

.quiz-input__input-container[correct="true"] .quiz-input__input {
    background-color:#78b000 !important;
    color:#fff !important;
    text-shadow: 1px 1px 0 #000000bf !important;
    caret-color: #78b000 !important;
    box-shadow:  3px 3px 0 #4d7300;
}

.quiz-input__input-container[correct="true"] .quiz-input__input:focus {
    box-shadow: 3px 3px 0 #4d7300 !important;
}

.quiz-input__input-container[correct="false"] .quiz-input__input {
    background-color:#d0002a !important;
    color: #fff !important;
    text-shadow: 1px 1px 0 #000000bf !important;
    caret-color:#d0002a !important;
    box-shadow:  3px 3px 0 #a20021;
}

.quiz-input__input-container[correct="false"] .quiz-input__input:focus {
    box-shadow:  3px 3px 0 #a20021 !important;
}

div.answer-exception {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#444;
    box-shadow: 3px 3px 0 #333;
}

.answer-exception::before {
    border-color: transparent transparent #444 transparent;
}

:root {
    --color-quiz-srs-correct-background: #8c0;
    --color-quiz-srs-incorrect-background: #f00;
    color-scheme: dark;
}

.quiz-input__exception {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#444;
    box-shadow: 3px 3px 0 #333;
}

.quiz-input__exception::before {
    border-color: transparent transparent #444 transparent;
}

.quiz-input__question-type-container[data-question-type="reading"] {
    background-image: linear-gradient(#333, #111);
    border-top: 1px solid #555;
    border-bottom: 1px solid #000;
    color: #fff;
    text-shadow: 0 1px 0 #000;
}

.quiz-input__question-type-container[data-question-type="meaning"] {
  background-image: linear-gradient(#EAEAEA, #BBB);
  border-top: 1px solid #d5d5d5;
  border-bottom: 1px solid #c8c8c8;
  color: #444;
  text-shadow: 0 1px 0 #fff;
}

turbo-frame#subject-info.subject-info {
    background-color:#2a2a2a;
}

.additional-content__content {
    border: 2px solid #333;
    box-shadow: 2px 2px 4px #222;
}

turbo-frame#last-items.last-items {
    background-color:#2a2a2a;
}

.subject-info[busy]:after {
    background-color:#2a2a2a;
    background-image:url(https://assets.wanikani.com/assets/v03/loading-100x100-08cd6590501550b2812b26b2dd9166d8fd3628b7546d34e50c49d2e96483943c.gif);
}

.last-item {
    text-shadow: 0 1px 0 #000;
    background-color:#3a3a3a;
    box-shadow: 2px 2px 4px #222;
}

.last-item__value {
    color:#fff;
}

.last-item:hover {
    background-color:#4a4a4a;
}
.subject-info .subject-collocations__pattern-name[aria-selected="true"]::after {
    background-color: #808080;
    background-image: none;
}

.additional-content__item--open:after {
    border-color:transparent transparent #333 transparent
}

.kana-chart {
    background-color: #2a2a2a;
}

.kana-chart__tab {
    text-shadow: 0 1px 0 #000;
}

.kana-chart__character {
    text-shadow: 0 1px 0 #000;
    background-color:#3a3a3a;
}

.kana-chart__character:hover {
    background-color:#555;
}

.kana-chart__tab--selected {
    border-color: #777 #777 transparent #777;
}

.kana-chart__tab:not(.kana-chart__tab--selected) {
    border-bottom-color: #777;
    color:#aaa
}

.kana-chart__tab:not(.kana-chart__tab--selected):hover {
    color: #fff;
}

.kana-chart__backspace {
    color:#fff;
    background-color:#3a3a3a;
}

.kana-chart__backspace:hover {
    background-color:#555;
}
.kana-chart__backspace-text {
    text-shadow: 0 1px 0 #000;
}

.last-items[busy] {
    background-color:#2a2a2a;
    min-height:80px
}

.last-items[busy]:after {
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    content:" ";
    background-color:#2a2a2a;
    background-image:url(https://assets.wanikani.com/assets/v03/loading-100x100-08cd6590501550b2812b26b2dd9166d8fd3628b7546d34e50c49d2e96483943c.gif);
    background-repeat:no-repeat;
    background-size:75px auto;
    background-position:50% 50%;
    z-index:1000
}

.character-header__content {
    height: 250px;
}

.quiz-input__question-type-container {
    font-size: 25px;
    padding-top: 15px;
    padding-bottom: 15px;
}

/* Page: Lessons */

.subject-slide__content {
    background-color:#2a2a2a;
}

.subject-slide__navigation, .subject-slide__navigation:visited {
    background-color:#2a2a2a;
}

.subject-slide__navigation:hover {
    color:#fff;
}

.subject-slide__navigation:hover .subject-slide__navigation-icon {
    background-color:#333;
}

.subject-character__meaning {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.subject-slide {
    background-color: #2a2a2a;
    box-shadow: 2px 2px 4px #222;
    border: 2px solid #333;
}

.wk-button--quiz {
    color:#fff !important;
    background-color:#8c0 !important;
}

.subject-slides__navigation {
    text-shadow: 0 1px 0 #000;
    background-color:#222;
}

.subject-character--tiny .subject-character__characters {
    box-shadow: 0 -1px 0 rgba(0,0,0,0.2) inset,0 0 10px rgba(255, 255, 255, 0.25);
}

.wk-button--tiny {
    box-shadow: 0 -1px 0 rgba(0,0,0,0.2) inset,0 0 10px rgba(255, 255, 255, 0.25);
}

.subject-slides__navigation-link[aria-selected=true]:after {
    border-color:transparent transparent #333 transparent;
}

.hotkeys-menu__header, .chat-button {
    color:#ccc;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
    border-radius: 0 0 0 0;
    border-color:#333;
}

.hotkeys-menu__header:hover, .chat-button:hover {
    color:#fff;
}

.wk-button--modal-primary, .wk-button--modal-secondary, .wk-button {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
    border-color:#444;
}

.wk-button--modal-primary:hover, .wk-button--modal-secondary:hover, .wk-button:hover {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#444;
    border-color:#555
}

.hotkeys-menu__header {
    background-color:#333;
}

.hotkeys-menu--open .hotkeys-menu__header-text {
    color:#fff;
}

.hotkeys-menu--open {
    color:#fff;
}

.hotkeys-menu--open .hotkeys-menu__header {
    color:#fff;
}

.hotkeys-menu--open .hotkeys-menu__content {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
}

.wk-button--modal-primary:focus, .wk-button--modal-secondary:focus, .wk-button:focus {
    outline:solid 2px #ccc;
    outline-offset:2px
}

.wk-hint {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;
}

.wk-hint__title {
    color: #ddd;
    text-shadow: 0 1px 0 #000;
}

.hotkeys-menu {
    background-color:#333;
}

.user-synonyms__form_container {
    background-color:#222;
}

.user-synonyms__synonym-button {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color:#333;

}

.user-synonyms__synonym-button:hover {
    background-color:#3a3a3a;
}

.user-synonyms__synonym-button:focus {
    outline:solid 2px #ccc;
    outline-offset:2px;
}

.wk-button--default:hover {
    cursor:pointer;
}

/* Extra study change (update 1.0.6)*/

.dashboard-panel {
    background-color:#333;
}

.extra-study__content {
    background-color:#444;
}

.dashboard-panel__title {
    text-shadow: 0 1px 0 #000;
}

.extra-study__image {
    filter: invert(73.5%);
}

.extra-study__intro {
    text-shadow: 0 1px 0 #000;
}

.extra-study-button__link {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.extra-study-button__link:hover {
    color:#999;
}

.extra-study-button__tooltip-button {
    color:#fff;
    border: 1px solid #999;
}

.extra-study-button {
    border: 1px solid #fff;
}

/* Dashboard Panel quick changes (update 1.0.7) */

.level-progress-bar {
    background-color:#2a2a2a;
}

.level-progress-dashboard__content {
    background-color:#444;
}

.subject-character--small .subject-character__characters {
    box-shadow: 0 -3px 0 rgba(0,0,0,0.2) inset,0 0 10px rgba(255,255,255,0.0);
}

/* Recent mistakes update quick changes (update 1.0.8) */

.recent-mistakes-dashboard__content {
    background-color:#444;
}

.recent-mistakes-dashboard__empty-image {
    filter: invert(73.5%);
}

/* Dashboard Panel changes (again) (update 1.1.0) */

.extra-study {
    background-color: #444;
}

.review-forecast__day {
    background-color: #444;
}

.dashboard-panel__content [busy]::after {
    background-color:#333;
}

.review-forecast__day-header:not([aria-controls]) .review-forecast__expanded-icon {
  color: #888;
}

.review-forecast {
    padding: 0 5px 0 0;
}

/* Dashboard panel fixes + other 25/10/23 (update 1.1.1) */

.wk-panel {
    background-color:#333;
}

.wk-panel__content [busy]::after {
    background-color:#333;
}

.dashboard .progress-and-forecast .wk-panel--level-progress {
    border-radius:5px;
    box-shadow: 0 1px 0 #2a2a2a;
}

.dashboard .progress-and-forecast .wk-panel--review-forecast {
    border-radius:5px;
    box-shadow: 0 1px 0 #2a2a2a;
}

.dashboard .progress-and-forecast .wk-panel--extra-study {
    border-radius:5px;
    box-shadow: 0 1px 0 #2a2a2a;
}

.dashboard .progress-and-forecast .wk-panel--recent-mistakes {
    border-radius:5px;
    box-shadow: 0 1px 0 #2a2a2a;
}

.wk-nav__item-link {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background-color: #333;
    border: 1px solid #333;
}

.wk-nav__item-link:hover {
    color:#000;
    text-shadow: 0 1px 0 #fff;
    background-color:#ccc;
    border: 1px solid #ccc;
    transition: color ease-out .1s,background-color ease-out .1s, border ease-out .1s;
}

.wk-nav__item-link:visited {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.wk-nav__item-link:hover {
    color:#000;
}

.wk-title--small {
    text-shadow: 0 1px 0 #000;
}

.wk-nav {
    text-shadow: 0 1px 0 #000;
    color: #fff;
}

/* Fixing forecast turbo frame 21/12/2023 (update 1.1.2) */

turbo-frame[data-show-loading="true"][busy]::after {
    color:#333;
    background-color:#333;
}

/* Forecast image thingy 30/12/2023 (update 1.1.3) */
.review-forecast__empty-content {
filter: invert(73.5%);
}
}
@-moz-document url-prefix("https://knowledge.wanikani.com/") {
/* Knowledge Guide */

body {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background:#111;
}

footer {
    background:#111;
}

.content {
    background:#222;
}

.categories a {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

.categories a:hover {
    color:#aaa;
}

.category li a:hover svg {
  fill: #3A3A3A;
}

header {
    color:#fff;
    text-shadow: 0 1px 0 #000;
    background:#111;
}

.hero_search input[type="search"] {
    color:#fff;
    background-color:#000;
}

.banner--getting-started::after {
    background-color:#222;
}

h1, h2, h3, h4, h5, h6 {
    color:#fff;
    text-shadow: 0 1px 0 #000;
}

a {
    color:#fff;
    text-shadow:#000;
}

a:hover {
    color:#aaa;
}

a.header-link:hover {
    color:#999;
}

.tutorial-series {
    background-color:#333;
}

.listing a:hover svg {
    fill:#3A3A3A;
}

.tutorial-series li a::after {
    background:#777;
}

.tutorial-series li a::before {
    color:#555
}

::selection {
    background:#666
}
`;

const DARK_MODE_STYLE_ID = 'wanikani-custom-dark-mode';

const createCustomDarkModeStyle = () => {
    console.log('debug: creating custom dark mode style!');
    const style = document.createElement('style');
    style.type = 'text/css';
    style.id = DARK_MODE_STYLE_ID;

    if (style.styleSheet) {
        style.styleSheet.cssText = darkModeCss;
    } else {
        style.appendChild(document.createTextNode(darkModeCss));
    }
    return style;
}

const handleDarkMode = (e) => {
    const headElement = document.getElementsByTagName('head')[0];
    if (e.matches) {
       if (document.getElementById(DARK_MODE_STYLE_ID)) return;
       const darkModeStyle = createCustomDarkModeStyle();
       headElement.appendChild(darkModeStyle);
    } else {
       const darkModeStyle = document.getElementById(DARK_MODE_STYLE_ID);
       if (darkModeStyle) headElement.removeChild(darkModeStyle);
    }
}

function init() {
    const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
    handleDarkMode(darkModeMediaQuery);

    if (darkModeMediaQuery.addListener) darkModeMediaQuery.addListener(handleDarkMode);
    else if (darkModeMediaQuery.addEventListener) darkModeMediaQuery.addEventListener("change", handleDarkMode);

}

init();