:root{

    --sudoku-bg:#181818;

    --grid-color:#444444;

    --given-color:#ffffff;

    --player-color:#4f46e5;

    --selected-color:#3149a5;

    --error-color:#ef4444;

}

/* ==========================================
   SUDOKU GENERATOR
========================================== */

input,
select,
textarea{

    width:100%;

    padding:10px;

    border-radius:8px;

    background:#1b1b1b;

    color:#fff;

    border:1px solid #333;

    box-sizing:border-box;

}


.btn-group{

    margin-top:20px;

}

.btn-group button{

    width:100%;

    margin-bottom:8px;

}

/* ==========================================
   SETTINGS
========================================== */

.settings-group{

    margin-top:20px;

    padding:18px;

    border-radius:10px;

    border:1px solid #2d2d2d;

}

.settings-group h3{

    margin:0 0 15px;

    font-size:16px;

}

.settings-option{

    display:flex;

    align-items:center;

    gap:10px;

    margin-top:14px;

    cursor:pointer;

    color:#ddd;

    user-select:none;

    font-weight:500;

}

.settings-option:hover{

    color:#fff;

}

.settings-option input[type="checkbox"]{

    width:auto;

    height:18px;

    margin:0;

    accent-color:#4f46e5;

}

/* ==========================================
   SUDOKU BOARD
========================================== */

.sudoku-container{

    display:flex;

    justify-content:center;

    align-items:center;

    margin-top:20px;

    margin-bottom:25px;

}

#sudokuBoard{

    display:grid;

    grid-template-columns:repeat(9,1fr);

    grid-template-rows:repeat(9,1fr);

    width:630px;

    aspect-ratio:1;

    border:4px solid var(--grid-color);

    border-radius:12px;

    overflow:hidden;

    background:var(--sudoku-bg);

    box-shadow:
        0 0 25px rgba(79,70,229,.20),
        inset 0 0 15px rgba(255,255,255,.04);

}

/* ==========================================
   CELLS
========================================== */

.cell{

    border:1px solid var(--grid-color);

    background:transparent;

    color:var(--player-color);

    font-size:26px;

    font-weight:700;

    text-align:center;

    line-height:1;

    padding:0;

    outline:none;

    appearance:none;

    -webkit-appearance:none;

    transition:.15s;

}

.cell:hover{

    background:#242424;

}

.cell.selected{

    background:var(--selected-color);

}

.cell.highlight{

    background:#242d48;

}

.cell.given{

    color:var(--given-color);

}

.cell.user{

    color:var(--player-color);

}

.cell.error{

    color:var(--error-color);

}

.cell.same{

    background:#303030;

}

/* ==========================================
   3x3 BORDERS
========================================== */

.border-right{

    border-right:3px solid var(--grid-color) !important;

}

.border-bottom{

    border-bottom:3px solid var(--grid-color) !important;

}

/* ==========================================
   STATS
========================================== */

.sudoku-stats{

    margin-top:20px;

}

.stats-row{

    display:grid;

    grid-template-columns:1fr 140px;

    align-items:center;

    padding:12px 0;

    border-bottom:1px solid #2d2d2d;

}

.stats-row span{

    color:#ccc;

    font-weight:500;

}

.stats-row strong{

    display:block;

    text-align:right;

    font-weight:700;

}

/* ==========================================
   STATUS COLORS
========================================== */

.status-ready{

    color:#10b981;

}

.status-working{

    color:#f59e0b;

}

.status-solved{

    color:#22c55e;

}

.status-error{

    color:#ef4444;

}

/* ==========================================
   BOARD ANIMATION
========================================== */

.generating{

    animation:pulseGlow 1.2s infinite alternate;

}

@keyframes pulseGlow{

    from{

        box-shadow:
            0 0 20px rgba(79,70,229,.15),
            inset 0 0 10px rgba(255,255,255,.02);

    }

    to{

        box-shadow:
            0 0 35px rgba(79,70,229,.35),
            inset 0 0 25px rgba(255,255,255,.05);

    }

}

/* ==========================================
   NUMBER INPUT POP ANIMATION
========================================== */

.cell.pop{

    animation:pop .15s ease;

}

@keyframes pop{

    0%{

        transform:scale(.8);

    }

    100%{

        transform:scale(1);

    }

}

/* ==========================================
   RESPONSIVE
========================================== */

@media(max-width:900px){

    #sudokuBoard{

        width:520px;

    }

}

@media(max-width:700px){

    #sudokuBoard{

        width:420px;

    }

    .cell{

        font-size:22px;

    }

}

@media(max-width:480px){

    #sudokuBoard{

        width:310px;

    }

    .cell{

        font-size:18px;

    }

}

/* ==========================================
   FORCE STAT ALIGNMENT
========================================== */

#statDifficulty,
#statFilled,
#statEmpty,
#statTimer,
#status{

    display:inline-block !important;

    width:140px;

    text-align:right;

    margin:0 !important;

    padding:0 !important;

    font:700 16px/1 Arial,sans-serif !important;

}