/* ========================================
   PROJECT XANDRO
   MODULES
======================================== */


/* ========================================
   DASHBOARD LAYOUT
======================================== */

.dashboard-grid{

    display:grid;

    grid-template-columns:2fr 1fr;

    gap:20px;

    align-items:start;

}

.left-column{

    display:flex;

    flex-direction:column;

    gap:18px;

}

.right-column{

    display:flex;

    flex-direction:column;

    gap:18px;

}


/* ========================================
   GENERIC CARD
======================================== */

.card{

    display:flex;

    flex-direction:column;

    background:var(--panel);

    border:1px solid #2f2f2f;

    border-left:4px solid var(--accent);

    border-radius:18px;

    padding:20px;

    transition:

        transform .25s ease,

        border-color .25s ease,

        box-shadow .25s ease;

}

.card:hover{

    transform:translateX(-8px);

    border-color:rgba(209,26,42,.65);

    box-shadow:0 12px 28px rgba(0,0,0,.25);

}


/* ========================================
   CARD TITLES
======================================== */

.card h2{

    font-size:.82rem;

    font-weight:600;

    letter-spacing:2px;

    text-transform:uppercase;

    color:var(--muted);

    transition:color .2s ease;

}

/* ========================================
   PRIMARY MODULE TITLES
======================================== */

#todo-card h2,
.goals h2{

    font-size:1rem;

    font-weight:700;

    letter-spacing:3px;

    color:var(--text);

}


/* ========================================
   CARD HEADER
======================================== */

.card-header{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-bottom:20px;

}


/* ========================================
   SHARED ADD BUTTON
======================================== */

#add-task-btn,
#add-goal-btn{

    width:36px;

    height:36px;

    border:none;

    border-radius:10px;

    background:var(--accent);

    color:white;

    font-size:22px;

    font-weight:600;

    cursor:pointer;

    transition:

        transform .2s ease,

        filter .2s ease,

        opacity .2s ease;

}

#add-task-btn:hover,
#add-goal-btn:hover{

    transform:scale(1.06);

    filter:brightness(1.08);

}

/* ========================================
   TODO MODULE
======================================== */

#todo-card{
    min-height:240px;
    max-height:450px;
}

.todo-content{
    overflow-y:auto;
}


/* ========================================
   TASK INPUT
======================================== */

.task-input-container{

    margin-bottom:16px;

    max-height:80px;

    overflow:hidden;

    transition:

        max-height .25s ease,

        opacity .25s ease,

        margin-bottom .25s ease;

}

.task-input-container.hidden{

    max-height:0;

    opacity:0;

    margin-bottom:0;

}

#task-input{

    width:100%;

    padding:12px 16px;

    background:#242424;

    color:var(--text);

    border:1px solid var(--border);

    border-radius:12px;

    outline:none;

    font-size:.95rem;

    transition:

        border-color .2s ease,

        background .2s ease;

}

#task-input:focus{

    border-color:var(--accent);

    background:#282828;

}


/* ========================================
   TASK LIST
======================================== */

.todo-content{

    flex:1;

    overflow-y:auto;

    max-height:330px;

}

#task-list{

    list-style:none;

    display:flex;

    flex-direction:column;

    gap:12px;

}


/* ========================================
   TASK ITEM
======================================== */

.task{

    display:flex;

    align-items:center;

    gap:14px;

    padding:12px 14px;

    background:#242424;

    border-radius:12px;

    transition:

        background .25s ease,

        transform .25s ease;

}

.task:hover{

    background:#2b2b2b;

}

.task input{

    width:18px;

    height:18px;

    accent-color:var(--accent);

    cursor:pointer;

}

.task span{

    flex:1;

    font-size:.95rem;

    font-weight:500;

    word-break:break-word;

}

.task.completed{

    opacity:.65;

}

.task.completed span{

    text-decoration:line-through;

}


/* ========================================
   DELETE BUTTON
======================================== */

.delete-task{

    margin-left:auto;

    width:34px;

    height:34px;

    display:flex;

    justify-content:center;

    align-items:center;

    border:none;

    border-radius:50%;

    background:transparent;

    color:#777;

    font-size:1.25rem;

    font-weight:600;

    cursor:pointer;

    opacity:0;

    transform:translateX(10px);

    transition:

        opacity .25s ease,

        transform .25s ease,

        background .25s ease,

        color .25s ease;

}

.task:hover .delete-task{

    opacity:1;

    transform:translateX(0);

}

.delete-task:hover{

    background:rgba(255,50,50,.12);

    color:var(--accent);

}


/* ========================================
   TASK ANIMATION
======================================== */

.task.deleting{

    overflow:hidden;

    animation:deleteTask .35s ease forwards;

}

/* ========================================
   NOTES MODULE
======================================== */

.notes{

    display:flex;
    min-height:90px;

}

.notes .card-header{

    display:flex;

    justify-content: space-between;

    align-items: center;

    margin-bottom: 16px;


}

.notes h2{

    margin-bottom:18px;

}

.notes-content{

    flex:1;

    display:flex;

}

#notes-status{

    font-size:.8rem;

    color:var(--muted);

    font-weight:500;

    margin-right:8px;

    transition:

        color .2s ease,

        opacity .2s ease;

}


/* ========================================
   NOTES EDITOR
======================================== */

#notes-input{

    flex:1;

    width:100%;

    min-height:120px;

    padding:14px 20px;

    border:none;

    outline:none;

    height:auto;

    resize:none;

    background:transparent;

    color:var(--text);

    font-family:inherit;

    font-size:1rem;

    line-height:1.9;

    letter-spacing:.2px;

    overflow-y:auto;

    transition:

    border-color .2s ease,

    background .2s ease;

}

#notes-input::placeholder{

    color:var(--muted);

    opacity:.65;

}

#notes-input:focus{

    color:#ffffff;

}


/* ========================================
   NOTES SCROLLBAR
======================================== */

#notes-input::-webkit-scrollbar{

    width:8px;

}

#notes-input::-webkit-scrollbar-track{

    background:transparent;

}

#notes-input::-webkit-scrollbar-thumb{

    background:#444;

    border-radius:999px;

}

#notes-input::-webkit-scrollbar-thumb:hover{

    background:#666;

}

/* ========================================
   QUOTE MODULE
======================================== */

.quote{

    align-self:stretch;

}

.quote h2{

    margin-bottom:6px;

}

#quote-text{

    margin-top:8px;

    padding-left:14px;

    border-left:4px solid var(--accent);

    color:var(--text);

    font-size:1.05rem;

    line-height:1.7;

    font-style:italic;

    white-space:pre-wrap;

    word-break:break-word;

    transition:opacity .3s ease;

}

#quote-text::before{

    content:"❝ ";

    color:var(--accent);

    font-size:2rem;

    font-style:normal;

}

#quote-author{

    margin-top:18px;

    text-align:right;

    color:var(--muted);

    font-size:.9rem;

    letter-spacing:1px;

}

/* ========================================
   PROGRESS MODULE
======================================== */

.progress{

    padding:18px 24px;

}

.progress h2{

    margin-bottom:18px;

}

.progress-container{

    display:flex;

    flex-direction:column;

    gap:22px;

}

.progress-bar{

    width:100%;

    height:16px;

    background:#242424;

    border-radius:999px;

    overflow:hidden;

}

#progress-fill{

    width:0;

    height:100%;

    background:var(--accent);

    transition:

    width .45s cubic-bezier(.4,0,.2,1);

}

.progress-stats{

    display:flex;

    flex-direction:column;

    align-items:flex-start;

    gap:8px;

}

.progress-stats p{

    color:var(--muted);

    font-size:.95rem;

}

#progress-percent{

    align-self:flex-end;

    font-size:1.8rem;

}

/* ========================================
   GOALS MODULE
======================================== */

.goals{

    align-self:stretch;

}

.goals-content{

    display:flex;

    flex-direction:column;

}

#goals-list{

    list-style:none;

    display:flex;

    flex-direction:column;

    gap:14px;

}

.goal{

    display:flex;

    align-items:center;

    gap:14px;

    padding:12px 14px;

    background:#242424;

    border-radius:12px;

    transition:

        background .25s ease,

        transform .25s ease;

}

.goal:hover{

    background:#2b2b2b;
    transform:translateX(4px);

}

.goal-toggle{

    border:none;

    background:none;

    color:var(--accent);

    font-size:1.45rem;

    cursor:pointer;

    transition:

        transform .25s ease,

        color .25s ease;

}

.goal-toggle:hover{

    transform:scale(1.15);

}

.goal span{

    flex:1;

    font-size:.95rem;

    font-weight:500;

}

.goal.completed{

    opacity:.75;

}

/* ========================================
   GOAL DELETE BUTTON
======================================== */

.delete-goal{

    margin-left:auto;

    width:34px;

    height:34px;

    display:flex;

    justify-content:center;

    align-items:center;

    border:none;

    border-radius:50%;

    background:transparent;

    color:#777;

    font-size:1.25rem;

    font-weight:600;

    cursor:pointer;

    opacity:0;

    transform:translateX(10px);

    transition:

        opacity .25s ease,

        transform .25s ease,

        background .25s ease,

        color .25s ease;

}

.goal:hover .delete-goal{

    opacity:1;

    transform:translateX(0);

}

.delete-goal:hover{

    background:rgba(255,50,50,.12);

    color:var(--accent);

}

.goal.deleting{

    overflow:hidden;

    animation:deleteTask .35s ease forwards;

}

.goal.completed .goal-toggle{

    animation:goalComplete .35s ease;

    transform:scale(1.15);

}

.goal-input-container{

    margin-bottom:16px;

    max-height:80px;

    overflow:hidden;

    transition:
        max-height .25s ease,
        opacity .25s ease,
        margin-bottom .25s ease;

}

.goal-input-container.hidden{

    max-height:0;

    opacity:0;

    margin-bottom:0;

}

#goal-input{

    width:100%;

    padding:12px 16px;

    border:1px solid var(--border);

    border-radius:12px;

    outline:none;

    background:#242424;

    color:var(--text);

    font-size:.95rem;

}

#goal-input:focus{

    border-color:var(--accent);

}

/* ========================================
   SHARED SCROLLBARS
======================================== */

.todo-content::-webkit-scrollbar,
.goals-content::-webkit-scrollbar,
#notes-input::-webkit-scrollbar{

    width:8px;

}

.todo-content::-webkit-scrollbar-track,
.goals-content::-webkit-scrollbar-track,
#notes-input::-webkit-scrollbar-track{

    background:transparent;

}

.todo-content::-webkit-scrollbar-thumb,
.goals-content::-webkit-scrollbar-thumb,
#notes-input::-webkit-scrollbar-thumb{

    background:#3b3b3b;

    border-radius:999px;

}

.todo-content::-webkit-scrollbar-thumb:hover,
.goals-content::-webkit-scrollbar-thumb:hover,
#notes-input::-webkit-scrollbar-thumb:hover{

    background:rgba(209,26,42,.35);

}



/* ========================================
   MODULE SPACING
======================================== */

.quote,
.progress,
.goals,
.notes,
#todo-card{

    width:100%;

}


/* ========================================
   TEXT SELECTION
======================================== */

::selection{

    background:rgba(226,41,57,.25);

    color:#ffffff;

}


/* ========================================
   INPUT PLACEHOLDERS
======================================== */

input::placeholder,
textarea::placeholder{

    color:var(--muted);

}


/* ========================================
   SMOOTH FOCUS
======================================== */

input,
textarea,
button{

    transition:

        all .2s ease;

}


/* ========================================
   SMALL UI POLISH
======================================== */

blockquote{

    margin:0;

}

textarea{

    overflow-wrap:break-word;

}

button{

    user-select:none;

}

/* ========================================
   EMPTY STATES
======================================== */

.empty-state{

    list-style:none;

    display:flex;

    flex-direction:column;

    justify-content:center;

    align-items:center;

    text-align:center;

    color:var(--muted);

    font-size:.95rem;

    line-height:1.8;

    padding:18px;

    border:2px dashed rgba(255,255,255,.08);

    border-radius:12px;

    background:rgba(255,255,255,.015);

    min-height:80px;

}

.empty-state span{

    font-size:.82rem;

    opacity:.8;

}

.empty-state strong{

    color:var(--accent);

}