.hidden{
    display:none !important;
}

/* =========================
   MINI PLAYER
========================= */

.mini-player{

    position:fixed;

    left:10px;
    right:10px;

    bottom:75px;

    height:64px;

    background:#4d1837;

    border-radius:12px;

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:0 12px;

    overflow:hidden;

    box-shadow:0 4px 20px rgba(0,0,0,.35);

    z-index:999;
}

/* Progress mini player */

.mini-progress{

    position:absolute;

    top:0;
    left:0;

    width:100%;
    height:2px;

    background:rgba(255,255,255,.15);
}

#miniProgressBar{

    width:0%;

    height:100%;

    background:white;

    transition:.2s;
}

/* Song Info */

.song-info{

    display:flex;

    align-items:center;

    gap:12px;

    flex:1;

    min-width:0;

    cursor:pointer;
}

.cover{

    width:44px;
    height:44px;

    border-radius:6px;

    overflow:hidden;

    flex-shrink:0;
}

.cover img{

    width:100%;
    height:100%;

    object-fit:cover;
}

.song-text{

    min-width:0;
}

#current-title{

    font-size:14px;

    font-weight:600;

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;
}

#current-artist{

    font-size:12px;

    color:rgba(255,255,255,.8);

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;
}

/* Controls */

.controls{

    display:flex;

    align-items:center;

    gap:8px;
}

.controls button{

    width:36px;
    height:36px;

    border:none;

    background:none;

    color:white;

    font-size:20px;

    cursor:pointer;
}

/* =========================
   FULLSCREEN PLAYER
========================= */

.fullscreen-player{

    position:fixed;

    inset:0;

    background:#121212;

    z-index:10000;

    display:flex;

    flex-direction:column;

    transition:.3s;
}

.player-header{

    position:relative;

    display:flex;

    justify-content:center;

    align-items:center;

    height:70px;
}

.player-header button{

    position:absolute;

    left:20px;

    background:none;

    border:none;

    color:white;

    font-size:28px;

    cursor:pointer;
}

.fullscreen-content{

    flex:1;

    display:flex;

    flex-direction:column;

    justify-content:center;

    align-items:center;

    padding:20px;
}

.fullscreen-cover{

    width:300px;

    height:300px;

    border-radius:20px;

    overflow:hidden;

    margin-bottom:30px;

    background:#282828;
}

.fullscreen-cover img{

    width:100%;

    height:100%;

    object-fit:cover;
}

.fullscreen-info{

    text-align:center;
}

.fullscreen-info h2{

    margin-bottom:10px;
}

.fullscreen-info p{

    color:#b3b3b3;
}

/* Progress Area */

.progress-area{

    width:100%;

    max-width:500px;

    margin-top:30px;
}

#progressBar{

    width:100%;
}

.time-row{

    display:flex;

    justify-content:space-between;

    margin-top:5px;

    color:#b3b3b3;

    font-size:13px;
}

/* =========================
   CONTROL PLAYER
========================= */

.fullscreen-controls{

    width:100%;

    display:flex;

    justify-content:center;

    align-items:center;

    gap:20px;

    margin-top:30px;
}

/* Shuffle & Repeat */

#shuffleBtn,
#repeatBtn{

    width:40px;

    height:40px;

    background:none;

    border:none;

    color:#b3b3b3;

    font-size:24px;

    cursor:pointer;
}

#shuffleBtn.active,
#repeatBtn.active{

    color:#1DB954;
}

/* Prev Next */

#fs-prev,
#fs-next{

    width:50px;

    height:50px;

    background:none;

    border:none;

    color:white;

    font-size:28px;

    cursor:pointer;
}

/* Play */

#fs-play{

    width:60px;

    height:60px;

    border-radius:50%;

    border:none;

    background:#1DB954;

    color:white;

    font-size:26px;

    display:flex;

    justify-content:center;

    align-items:center;

    cursor:pointer;
}

/* =========================
   MOBILE
========================= */

@media(max-width:768px){

    .mini-player{

        height:62px;

        bottom:72px;
    }

    .cover{

        width:42px;
        height:42px;
    }

    .fullscreen-cover{

        width:280px;
        height:280px;
    }
}

.player-context{

    text-align:center;

    margin-top:10px;

    margin-bottom:20px;

}

.player-context small{

    color:#cfcfcf;

    font-size:11px;

    letter-spacing:2px;

}

.player-context h4{

    margin-top:5px;

    color:white;

    font-size:17px;

    font-weight:700;

}

#songInfo{

    opacity:1;

    transform:translateY(0);

    transition:
        opacity .28s ease,
        transform .28s ease;

}

#songInfo.fade{

    opacity:0;

    transform:translateY(15px);

}

/* =========================
   PLAYER ACTIONS
========================= */

.player-actions{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:18px;
    margin-top:12px;
}

.player-actions button{
    width:46px;
    height:46px;

    border:none;
    border-radius:50%;

    background:#242424;
    color:#fff;

    cursor:pointer;

    display:flex;
    justify-content:center;
    align-items:center;

    font-size:24px;

    transition:.25s;
}

.player-actions button:hover{
    background:#1db954;
    transform:scale(1.08);
}

/* =========================
   QUEUE SHEET
========================= */

.queue-sheet{

    position:fixed;

    left:0;
    bottom:0;

    width:100%;
    height:78vh;

    background:#121212;

    border-radius:24px 24px 0 0;

    z-index:9999;

    display:flex;
    flex-direction:column;

    animation:queueUp .25s ease;
}

@keyframes queueUp{

    from{
        transform:translateY(100%);
    }

    to{
        transform:translateY(0);
    }

}

.queue-sheet.hidden{
    display:none;
}

/* Handle */

.queue-handle{

    width:55px;
    height:5px;

    background:#666;

    border-radius:30px;

    margin:10px auto 18px;

}

/* Header */

.queue-header{

    padding:0 20px 15px;

}

.queue-header h2{

    color:white;
    font-size:22px;
    margin:0;

}

.queue-header p{

    color:#9f9f9f;
    margin-top:4px;
    font-size:14px;

}

/* Lagu yang sedang diputar */

.queue-current{

    display:flex;
    align-items:center;

    gap:14px;

    padding:15px 20px;

    margin:0 16px;

    border-radius:14px;

    background:#1f1f1f;

}

.queue-current img{

    width:60px;
    height:60px;

    border-radius:10px;

    object-fit:cover;

}

.queue-current-info{

    flex:1;
    overflow:hidden;

}

.queue-current-info h3{

    margin:0;

    color:#fff;

    font-size:16px;

    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;

}

.queue-current-info p{

    margin-top:4px;

    color:#b3b3b3;

    font-size:14px;

}

#queuePause{

    width:46px;
    height:46px;

    border:none;

    border-radius:50%;

    background:#1db954;

    color:#000;

    display:flex;
    justify-content:center;
    align-items:center;

    font-size:28px;

    cursor:pointer;

}

/* Divider */

.queue-divider{

    margin:24px 20px 12px;

    color:#b3b3b3;

    font-size:14px;

    font-weight:600;

}

/* List */

#queueList{

    flex:1;

    overflow-y:auto;

    padding:0 10px 20px;

}

/* Item Queue */

.queue-item{

    display:flex;
    align-items:center;

    gap:12px;

    padding:10px;

    border-radius:12px;

    transition:.2s;

    cursor:pointer;

}

.queue-item:hover{

    background:#222;

}

.queue-item img{

    width:52px;
    height:52px;

    border-radius:8px;

    object-fit:cover;

}

.queue-item-info{

    flex:1;
    overflow:hidden;

}

.queue-item-info h4{

    margin:0;

    color:#fff;

    font-size:15px;

    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;

}

.queue-item-info p{

    margin-top:4px;

    color:#9f9f9f;

    font-size:13px;

}

/* Scroll */

#queueList::-webkit-scrollbar{

    width:5px;

}

#queueList::-webkit-scrollbar-thumb{

    background:#444;
    border-radius:20px;

}

.queue-source{
    margin-top:6px;
    display:flex;
    align-items:center;
    gap:6px;
    color:#b3b3b3;
    font-size:15px;
}

.queue-source small{
    font-size:15px;
    color:#b3b3b3;
}

#queueContext{
    color:#fff;
    font-weight:600;
}