/*
=========================================
OBNYXA Webkit Cyber Gothic UI
=========================================
Author: Sophie
=========================================
*/


* {

    box-sizing:border-box;

}



body {

    margin:0;

    min-height:100vh;


    background:

    radial-gradient(
        circle at top,
        #35105c,
        #090014 50%,
        #000
    );


    color:#eadcff;


    font-family:
    "Segoe UI",
    Arial,
    sans-serif;

}



/*
=========================
Animated Background
=========================
*/


body::before {

    content:"";


    position:fixed;


    inset:0;


    background:

    linear-gradient(
        120deg,
        transparent,
        rgba(168,85,247,.15),
        transparent
    );


    animation:

    backgroundMove
    12s infinite;


    pointer-events:none;

}



@keyframes backgroundMove {


    0% {

        transform:translateX(-100%);

    }


    50% {

        transform:translateX(100%);

    }


    100% {

        transform:translateX(-100%);

    }

}



/*
=========================
Layout
=========================
*/


.webkit-container {

    display:flex;

    min-height:100vh;

}



.webkit-main {

    flex:1;

}



/*
=========================
Sidebar
=========================
*/


.webkit-sidebar {

    width:260px;


    padding:25px;


    background:

    rgba(
        15,
        5,
        30,
        .85
    );


    backdrop-filter:blur(15px);


    border-right:

    1px solid

    rgba(
        190,
        100,
        255,
        .4
    );

}



/*
=========================
OBNYXA Sidebar Logo
=========================
*/


.webkit-logo {

    display:flex;

    justify-content:center;

    align-items:center;


    padding:20px;


    margin-bottom:40px;

}



.webkit-logo img {


    width:190px;


    max-width:100%;


    height:auto;


    object-fit:contain;


    filter:

    drop-shadow(
        0 0 15px #8b5cf6
    );


    transition:.3s;

}



.webkit-logo img:hover {


    transform:

    scale(1.05);


    filter:

    drop-shadow(
        0 0 25px #a855f7
    );

}


/*
=========================
Navigation
=========================
*/


.webkit-menu {

    display:flex;

    flex-direction:column;

    gap:12px;

}



.webkit-menu a {


    padding:12px 15px;


    border-radius:12px;


    color:#eadcff;


    text-decoration:none;


    transition:.3s;

}



.webkit-menu a:hover {


    background:

    rgba(
        168,
        85,
        247,
        .25
    );


    box-shadow:

    0 0 20px #a855f7;


    transform:

    translateX(5px);

}



/*
=========================
Navbar
=========================
*/


.webkit-navbar {


    height:70px;


    display:flex;


    align-items:center;


    justify-content:space-between;


    padding:0 30px;



    background:

    rgba(
        20,
        10,
        35,
        .7
    );


    border-bottom:

    1px solid

    rgba(
        190,
        100,
        255,
        .3
    );

}


/*
=========================
Navbar Branding Logo
=========================
*/


.navbar-brand {


    display:flex;


    align-items:center;


    gap:15px;

}



.navbar-brand img {


    width:90px;


    height:45px;


    object-fit:contain;


    filter:

    drop-shadow(
        0 0 12px #a855f7
    );


    transition:.3s;

}



.navbar-brand img:hover {


    transform:

    scale(1.05);


    filter:

    drop-shadow(
        0 0 25px #a855f7
    );

}


.navbar-title {


    font-size:22px;


    color:#d8b4fe;


    font-weight:bold;

}



.navbar-user {


    font-weight:bold;


    color:#eadcff;

}



/*
=========================
Content
=========================
*/


.webkit-content {

    padding:30px;

}



.webkit-grid {


    display:grid;


    grid-template-columns:

    repeat(
        auto-fit,
        minmax(
            300px,
            1fr
        )
    );


    gap:25px;

}



/*
=========================
Cards
=========================
*/


.card {


    background:

    rgba(
        20,
        10,
        35,
        .75
    );


    border:

    1px solid

    rgba(
        190,
        100,
        255,
        .4
    );


    border-radius:20px;


    padding:25px;


    backdrop-filter:blur(15px);


    box-shadow:

    0 0 25px

    rgba(
        168,
        85,
        247,
        .25
    );


    transition:.3s;

}



.card:hover {


    transform:

    translateY(-8px);


    box-shadow:

    0 0 40px

    rgba(
        168,
        85,
        247,
        .8
    );

}



.card h2 {


    color:#d8a4ff;


    text-shadow:

    0 0 10px #a855f7;

}



/*
=========================
Status
=========================
*/


.status {


    padding:5px 14px;


    border-radius:20px;


    font-size:12px;


    text-transform:uppercase;

}



.status.online {


    background:#00ff88;


    color:#001;


    box-shadow:

    0 0 20px #00ff88;

}



.status.offline {


    background:#ff0055;


    color:white;


    box-shadow:

    0 0 20px #ff0055;

}



/*
=========================
Logout
=========================
*/


#logout-btn {


    width:100%;


    margin-top:30px;


    padding:12px;


    border-radius:12px;


    border:

    1px solid #a855f7;


    background:transparent;


    color:white;


    cursor:pointer;


    transition:.3s;

}



#logout-btn:hover {


    background:#a855f7;


    color:#100018;


    box-shadow:

    0 0 25px #a855f7;

}
/*
=========================
OBNYXA Login Screen
=========================
*/


.login-page {


    display:flex;


    justify-content:center;


    align-items:center;


    min-height:100vh;


}



.login-container {


    width:100%;


    display:flex;


    justify-content:center;


    position:relative;


    z-index:2;


}



.login-card {


    position:relative;


    z-index:2;


    width:420px;


    padding:40px;


    background:

    rgba(
        20,
        10,
        35,
        .85
    );


    border:

    1px solid

    rgba(
        190,
        100,
        255,
        .5
    );


    border-radius:25px;


    backdrop-filter:blur(20px);


    box-shadow:

    0 0 40px

    rgba(
        168,
        85,
        247,
        .5
    );

}



.login-logo {


    width:280px;


    max-width:100%;


    filter:

    drop-shadow(
        0 0 20px #a855f7
    );


    margin-bottom:20px;


}



.login-card h1 {


    color:#d8a4ff;


    text-shadow:

    0 0 15px #a855f7;


}



.login-subtitle {


    color:#c084fc;


    margin-bottom:30px;


}



.login-field {


    text-align:left;


    margin-bottom:20px;


}



.login-field label {


    display:block;


    margin-bottom:8px;


    color:#eadcff;


}



.login-field input {


    width:100%;


    padding:12px;


    border-radius:12px;


    border:

    1px solid #a855f7;


    background:

    rgba(
        0,
        0,
        0,
        .4
    );


    color:white;


    outline:none;


}



.login-field input:focus {


    box-shadow:

    0 0 20px #a855f7;


}



.login-button {


    width:100%;


    padding:14px;


    border-radius:15px;


    border:none;


    background:#a855f7;


    color:#100018;


    font-weight:bold;


    cursor:pointer;


    transition:.3s;


}



.login-button:hover {


    box-shadow:

    0 0 30px #a855f7;


    transform:

    scale(1.03);


}
/*
=========================
OBNYXA Login Atmosphere
=========================
*/


.login-page::before {


    content:"";


    position:fixed;


    inset:0;


    background:


    radial-gradient(
        circle at center,
        rgba(168,85,247,.25),
        transparent 45%
    );


    animation:

    loginPulse
    8s infinite;


    pointer-events:none;

}



.login-page::after {


    content:"";


    position:fixed;


    inset:0;


    background:

    linear-gradient(
        120deg,
        transparent,
        rgba(168,85,247,.12),
        transparent
    );


    animation:

    loginScan
    10s infinite;


    pointer-events:none;

}



@keyframes loginPulse {


    0% {


        opacity:.4;


        transform:scale(1);


    }


    50% {


        opacity:.8;


        transform:scale(1.15);


    }


    100% {


        opacity:.4;


        transform:scale(1);


    }

}



@keyframes loginScan {


    0% {


        transform:translateX(-100%);


    }


    50% {


        transform:translateX(100%);


    }


    100% {


        transform:translateX(-100%);


    }

}
/*
=========================
OBNYXA Dashboard UI
=========================
*/


.dashboard-card {

    min-height:220px;

}



.dashboard-line {

    display:flex;

    justify-content:space-between;

    align-items:center;


    padding:10px 0;


    border-bottom:

    1px solid

    rgba(
        190,
        100,
        255,
        .15
    );


    color:#c4b5fd;

}



.dashboard-line span {


    color:#f0abfc;


    font-weight:bold;


    text-shadow:

    0 0 8px #a855f7;

}
/*
=========================
OBNYXA Service Status
=========================
*/


.dashboard-line .status {


    min-width:80px;


    text-align:center;


    padding:5px 12px;


    border-radius:20px;


    font-size:12px;


    text-transform:uppercase;


}



.dashboard-line .status.online {


    background:

    rgba(
        0,
        255,
        136,
        .15
    );


    color:#00ff88;


    border:

    1px solid #00ff88;


    box-shadow:

    0 0 15px #00ff88;

}



.dashboard-line .status.offline {


    background:

    rgba(
        255,
        0,
        85,
        .15
    );


    color:#ff0055;


    border:

    1px solid #ff0055;


    box-shadow:

    0 0 15px #ff0055;

}
/*
=========================
OBNYXA Progress Bars
=========================
*/


.dashboard-progress {

    margin:15px 0;

}



.progress-title {

    display:flex;

    justify-content:space-between;

    margin-bottom:8px;

    color:#c4b5fd;

}



.progress-title span {

    color:#f0abfc;

    font-weight:bold;

}



.progress-bar {


    width:100%;


    height:12px;


    background:

    rgba(
        0,
        0,
        0,
        .5
    );


    border-radius:20px;


    overflow:hidden;


    border:

    1px solid

    rgba(
        168,
        85,
        247,
        .4
    );

}



.progress-fill {


    height:100%;


    width:0%;


    background:

    linear-gradient(
        90deg,
        #7c3aed,
        #e879f9
    );


    box-shadow:

    0 0 15px #a855f7,
    0 0 30px #e879f9;


    border-radius:20px;


    transition:

    width .5s ease;

}
.progress-fill {


    height:100%;


    width:0%;


    background:

    linear-gradient(
        90deg,
        #7c3aed,
        #e879f9
    );


    box-shadow:

    0 0 15px #a855f7,
    0 0 30px #e879f9;


    border-radius:20px;


    transition:

    width .5s ease;

}
/*
=========================
OBNYXA Temperature Status
=========================
*/


.temperature-normal {

    color:#a855f7 !important;

    text-shadow:
    0 0 15px #a855f7;

}



.temperature-warm {


    color:#facc15 !important;


    text-shadow:

    0 0 15px #facc15;


}



.temperature-hot {


    color:#ff0055 !important;


    text-shadow:

    0 0 20px #ff0055;


    animation:

    temperaturePulse
    1.5s infinite;


}



@keyframes temperaturePulse {


    50% {


        opacity:.6;


    }


}
/*
=========================
OBNYXA Radio Panel
=========================
*/


.radio-card {


    text-align:center;


}



.radio-status {


    margin:20px 0;


}



.radio-track {


    padding:15px;


    background:

    rgba(
        0,
        0,
        0,
        .25
    );


    border-radius:15px;


    margin-bottom:20px;


}



.radio-track h3 {


    color:#c084fc;


}



.radio-track p {


    color:#f0abfc;


    font-weight:bold;


}



.radio-button {


    width:100%;


    padding:12px;


    border-radius:15px;


    border:1px solid #a855f7;


    background:transparent;


    color:#eadcff;


    cursor:pointer;


    transition:.3s;


}



.radio-button:hover {


    background:#a855f7;


    color:#100018;


    box-shadow:

    0 0 25px #a855f7;


}

/*
=========================
OBNYXA Radio Control Page
=========================
*/


.radio-control-card {


    max-width:600px;


}



.radio-live-status {


    text-align:center;


    margin:25px 0;


}



.radio-controls {


    display:flex;


    gap:15px;


    margin-top:25px;


}



.radio-button {


    flex:1;


    padding:14px;


    border-radius:15px;


    border:1px solid #a855f7;


    background:transparent;


    color:#eadcff;


    cursor:pointer;


    transition:.3s;


}



.radio-button:hover {


    background:#a855f7;


    color:#100018;


    box-shadow:

    0 0 25px #a855f7;


}



.radio-button.stop {


    border-color:#ff0055;


}



.radio-button.stop:hover {


    background:#ff0055;


    box-shadow:

    0 0 25px #ff0055;


}
/*
=========================
OBNYXA Radio UI
=========================
*/


.radio-panel {


    display:flex;

    justify-content:center;


}



.radio-main-card {


    width:600px;

    text-align:center;


}



.radio-live-box {


    margin:25px;


}



.radio-track-box {


    background:

    rgba(
        0,
        0,
        0,
        .25
    );


    border-radius:20px;


    padding:20px;


}



.radio-track-box h3 {


    color:#c084fc;


}



.radio-track-box p {


    color:#f0abfc;


    font-size:20px;


    font-weight:bold;


}





.radio-info-grid {


    display:grid;


    grid-template-columns:

    repeat(
        3,
        1fr
    );


    gap:15px;


    margin-top:25px;


}



.radio-info-item {


    background:

    rgba(
        168,
        85,
        247,
        .15
    );


    padding:15px;


    border-radius:15px;


}



.radio-info-item span {


    display:block;


    color:#c4b5fd;


}



.radio-info-item strong {


    color:#f0abfc;


    font-size:20px;


}






.radio-equalizer {


    height:60px;


    display:flex;


    justify-content:center;


    align-items:end;


    gap:8px;


    margin:30px;


}



.radio-equalizer span {


    width:8px;


    height:20px;


    background:#a855f7;


    animation:

    equalizer
    1s infinite;


}



.radio-equalizer span:nth-child(2){

    animation-delay:.2s;

}


.radio-equalizer span:nth-child(3){

    animation-delay:.4s;

}


.radio-equalizer span:nth-child(4){

    animation-delay:.6s;

}


.radio-equalizer span:nth-child(5){

    animation-delay:.8s;

}



@keyframes equalizer {


    50% {


        height:60px;


    }


}



.radio-controls {


    display:flex;


    gap:15px;


}



.radio-button {


    flex:1;


}
.radio-equalizer.active span {

    animation:
    equalizer
    1s infinite;

}



.radio-equalizer:not(.active) span {

    height:10px;

    animation:none;

}



.status.online {

    background:#00ff88;

    color:#001;

    box-shadow:
    0 0 20px #00ff88;

}



.status.offline {

    background:#ff0055;

    color:white;

    box-shadow:
    0 0 20px #ff0055;

}

/*
=========================================
OBNYXA Radio Player Upgrade
=========================================
*/


.radio-subtitle {

    color:#c084fc;

    margin-top:-10px;

    text-shadow:
    0 0 10px #a855f7;

}




#radio-player {


    width:100%;


    margin-top:25px;


    border-radius:15px;


    filter:

    drop-shadow(
        0 0 15px #a855f7
    );


}




.radio-main-card {


    position:relative;


    overflow:hidden;


}




.radio-main-card::before {


    content:"";


    position:absolute;


    inset:-2px;


    background:

    linear-gradient(
        120deg,
        transparent,
        rgba(168,85,247,.4),
        transparent
    );


    animation:

    radioGlow
    8s infinite;


    pointer-events:none;


}





@keyframes radioGlow {


    0% {

        transform:
        translateX(-100%);

    }


    50% {

        transform:
        translateX(100%);

    }


    100% {

        transform:
        translateX(-100%);

    }


}




.radio-live-box .online {


    animation:

    livePulse
    1.5s infinite;


}




@keyframes livePulse {


    50% {


        box-shadow:

        0 0 35px #00ff88;


    }


}




.radio-info-grid {


    grid-template-columns:

    repeat(
        4,
        1fr
    );


}




@media(max-width:800px){


.radio-info-grid {


    grid-template-columns:

    repeat(
        2,
        1fr
    );


}


}



#radio-page-track {


    min-height:30px;


}