Skip to content

Modern WaniKani by FancyFurret

Screenshot of Modern WaniKani

Details

AuthorFancyFurret

LicenseMIT

Categorywanikani.com

Created

Updated

Code size15 kB

Code checksume34eb207

Statistics

Learn how we calculate statistics in the FAQ.

Failed to fetch stats.

Description

A sleek redesign for WaniKani's review interface

Notes

Works in both light mode and dark mode, based off of your browser/OS settings. Only affects the review and lesson pages, not the dashboard.

Source code

Source code has over 10K characters, so we truncated it. You can inspect the full source code on install link.
/* ==UserStyle==
@name         Modern WaniKani
@version      20250409.19.45
@namespace    ?
@description  A sleek redesign for WaniKani's review interface
@license      MIT
==/UserStyle== */

@-moz-document url-prefix("https://www.wanikani.com/subject-lessons"), url("https://www.wanikani.com/subjects/review") {

/* ===== CSS Variables ===== */
:root {
    /* Theme Colors */
    --color-primary: #5643cc;
    --color-primary-light: #7863e0;
    --color-primary-dark: #4432aa;
    --color-secondary: #ff6b6b;
    --color-success: #43cc9a;
    --color-danger: #ff6b6b;
    --color-warning: #ffb347;

    /* Neutral Colors */
    --color-text: #222639;
    --color-text-light: #f8f9fa;
    --color-text-muted: #6c757d;
    --color-text-muted-dark: #343a40;
    --color-text-muted-light: #e9ecef;

    /* Background Colors */
    --color-bg: #f5f7fa;
    --color-bg-card: #ffffff;
    --color-bg-card-hover: #eceef0;
    --color-bg-input: #ffffff;
    --color-bg-header: rgba(255, 255, 255, 0.8);

    /* Border Colors */
    --color-border: #e9ecef;
    --color-border-hover: #5643cc;

    /* Subject Type Colors */
    --color-radical: #00aaff;
    --color-kanji: #ff00aa;
    --color-vocabulary: #aa00ff;

    /* Spacing & Layout */
    --spacing-xs: 0.5rem;
    --spacing-sm: 1rem;
    --spacing-md: 1.5rem;
    --spacing-lg: 2rem;

    /* Border Radius */
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 20px;
    --radius-full: 100px;

    /* Shadows */
    --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.05);
    --shadow-md: 0 4px 20px rgba(0, 0, 0, 0.08);
    --shadow-lg: 0 8px 30px rgba(0, 0, 0, 0.12);
    --shadow-primary: 0 0 15px rgba(86, 67, 204, 0.5);

    /* Transitions */
    --transition: all 0.3s ease;
}

/* Dark Theme Variables */
@media (prefers-color-scheme: dark) {
    :root {
        /* Theme Colors */
        --color-primary: #7863e0;
        --color-primary-light: #9683ff;
        --color-primary-dark: #5643cc;

        /* Neutral Colors */
        --color-text: #f8f9fa;
        --color-text-light: #222639;
        --color-text-muted: #adb5bd;
        --color-text-muted-dark: #ced4da;
        --color-text-muted-light: #343a40;

        /* Background Colors */
        --color-bg: #121320;
        --color-bg-card: #1a1c2c;
        --color-bg-card-hover: #22253a;
        --color-bg-input: #1a1c2c;
        --color-bg-header: rgba(26, 28, 44, 0.8);

        /* Border Colors */
        --color-border: #343a40;
        --color-border-hover: #7863e0;
    }
}

/* ===== Base Styles ===== */
* {
    text-shadow: none !important;
}

body {
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;
    background-color: var(--color-bg);
    color: var(--color-text);
    line-height: 1.6;
}

.site-content {
    max-width: 100vw;
    overflow-x: hidden;
}

/* ===== Quiz Container ===== */
.quiz {
    background: linear-gradient(135deg, var(--color-bg) 0%, var(--color-bg) 100%);
    box-shadow: var(--shadow-lg);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
    margin: 0 auto;
}

.quiz__content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    max-width: 1000px;
    margin: auto;
}

/* ===== Quiz Progress ===== */
.quiz-progress {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 6px;
    z-index: 1000;
    background: var(--color-bg);
}

.quiz-progress__bar {
    background: linear-gradient(90deg, var(--color-primary-light), var(--color-primary));
    height: 100%;
    transition: var(--transition);
    border-radius: 0 3px 3px 0;
    box-shadow: var(--shadow-primary);
}

/* ===== Other ====== */

#turbo-body {
    background: var(--color-bg);
}

.lesson-container {
    margin: 0 auto;
    max-width: 1200px;
}

.subject-slides__navigation {
    border-radius: var(--radius-md);
    background: var(--color-bg-card);
    color: var(--color-text);
}

.subject-slide {
    background-color: var(--color-bg-card);
    border-radius: var(--radius-md);
    margin-left: 0;
    margin-right: 0;
    border: none;
    box-shadow: none;
}

.subject-character__characters, .wk-button {
    box-shadow: none !important;
    border-radius: var(--radius-sm) !important;
}

.subject-slide__navigation-icon:hover {
    background: var(--color-bg-card-hover) !important;
}

.subject-collocations__pattern-name {
    background: none;
    color: var(--color-text) !important;
}

.subject-collocations__pattern-name[aria-selected=true] {
    background: var(--color-bg-card-hover);
    color: var(--color-text) !important;
}

.subject-character-grid__items {
    gap: var(--spacing-sm);
}

.subject-character--grid:after {
    border: none;    
}

.subject-character {
    box-shadow: none !important;
    border: none;
    border-radius: var(--radius-lg);
}

/* ===== Character Header ===== */
.character-header {
    background: var(--color-bg-header);
    border-radius: var(--radius-md);
    padding: 0;
    margin-bottom: var(--spacing-sm);
    margin-top: var(--spacing-lg);
    box-shadow: var(--shadow-md);
    transition: var(--transition);
}

.character-header:hover {
    box-shadow: var(--shadow-lg);
}

.character-header--radical {
    border-top: 5px solid var(--color-radical);
}

.character-header--kanji {
    border-top: 5px solid var(--color-kanji);
}

.character-header--vocabulary {
    border-top: 5px solid var(--color-vocabulary);
}

.character-header__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: 0;
    padding: var(--spacing-sm);
}

.character-header__menu {
    display: flex;
    justify-content: space-between;
    width: 100%;
    margin-bottom: var(--spacing-sm);
}

.character-header__characters {
    font-size: 5rem;
    font-weight: 700;
    color: var(--color-text);
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    margin: 0;
    transition: var(--transition);
}

.character-header__characters:hover {
    transform: scale(1.05);
}

.character-header__meaning {
    font-size: 1.5rem;
    color: var(--color-text-muted);
    margin-top: var(--spacing-xs);
}

.character-header__srs-container {
    margin-top: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    display: inline-flex;
    align-items: start;
    justify-content: center;
    top: -0.5rem;
}

.character-header__srs-icon .wk-icon {
    color: var(--color-text-light) !important;
}

.character-header__srs-content {
    border-radius: var(--radius-full);
}

/* ===== Quiz Input ===== */
.quiz-input {
    background: var(--color-bg-input);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
    transition: var(--transition);
}

.quiz-input__input-container[correct=false] .quiz-input__input {
    background: rgba(255, 0, 0, 0.17);
}

.quiz-input__input-container[correct=true] .quiz-input__input {
    background: rgba(122, 204, 122, 0.44);
}

.quiz-input__question-type-container {
    display: flex;
    align-items: center;
    justify-content: center;
    border: unset !important;
    padding-bottom: var(--spacing-xs);
    background: var(--color-bg-card) !important;
}

.quiz-input__question-category {
    background: var(--color-primary);
    color: var(--color-text-light);
    padding: 0.4rem 0.8rem;
    border-radius: var(--radius-full);
    font-size: 0.8rem;
    font-weight: 600;
    margin-right: var(--spacing-xs);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.quiz-input__question-type {
    color: var(--color-text-muted);
    font-weight: 400;
    font-size: 1.2rem;
}

.quiz-input__input-wrapper {
    position: relative;
}

.quiz-input__input-container {
    display: flex;
    align-items: center;
    max-width: 70%;
    margin: auto;
}

.quiz-input__input-container form {
    flex-grow: 1;
    display: flex;
    align-items: center;
    gap: 20px;
}

.quiz-input__input {
    flex: 1;
    border: 1px solid var(--color-border) !important;
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs);
    font-size: 1.2rem;
    transition: var(--transition);
    width: 100%;
    background: var(--color-bg-input);
    color: var(--color-text) !important;
    box-shadow: none;
}

.quiz-input__input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(86, 67, 204, 0.2);
}

.quiz-input__submit-button {
    position: absolute;
    background: var(--color-primary);
    color: var(--color-text-light);
    border: none;
    border-radius: var(--radius-full);
    height: 30px;
    margin: auto;
    right: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: var(--transition);
}

.quiz-input__submit-button svg {
    transform: scale(0.6);
}

.quiz-input__submit-button:hover {
    background: var(--color-primary-dark);
    transform: translateX(2px);
}

.quiz-input__submit-button .wk-icon {
    color: var(--color-text-light) !important;
}

/* ===== Answer Exception ===== */
.answer-exception {
    background: var(--color-bg-card);
    color: var(--color-text);
    box-shadow: none;
    border-radius: var(--radius-md);
}

.quiz-input__exception {
    background: var(--color-bg-card-hover);
    color: var(--color-text);
    box-shadow: none;
    border-radius: var(--radius-md);
}

/* ===== Additional Content ===== */
.additional-content {
    margin-top: 0;
    flex: none;
    margin-bottom: 0;
}

.additional-content__menu {
    display: flex;
    flex-wrap: nowrap;
    gap: 10px;
    list-style: none;
    padding: 0;
    width: 50%;
    margin: auto;
}

.additional-content__menu-item {
    flex: 1 0 auto !important;
}

.additional-content__item {
    background: var(--color-bg-card);
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: var(--color-text-muted-dark);
    font-weight: 500;...

Reviews

No reviews yet.