/* --- THEME SYSTEM --- */



html {



    transition: none;



}



html.theme-transitioning {



    transition: background-color 0.6s cubic-bezier(0.4, 0, 0.2, 1),



                color 0.6s cubic-bezier(0.4, 0, 0.2, 1);



}







html.theme-transitioning * {



    transition: background-color 0.6s cubic-bezier(0.4, 0, 0.2, 1),



                border-color 0.6s cubic-bezier(0.4, 0, 0.2, 1),



                box-shadow 0.6s cubic-bezier(0.4, 0, 0.2, 1),



                color 0.6s cubic-bezier(0.4, 0, 0.2, 1) !important;



}







:root, [data-theme="vaporwave"] {



    --bg-color: #0f0a1e;



    --sidebar-color: #160e2c;



    --accent-color: #9d50ff;



    --accent-glow: rgba(157, 80, 255, 0.6);



    --glass: rgba(157, 80, 255, 0.08);



    --card-bg: #1d143a;



    --text-main: #ffffff;



    --text-dim: #b3a9c9;



}







[data-theme="midnight"] {



    --bg-color: #00040a;



    --sidebar-color: #000a1a;



    --accent-color: #0072ce;



    --accent-glow: rgba(0, 114, 206, 0.6);



    --glass: rgba(0, 114, 206, 0.1);



    --card-bg: #001229;



}







[data-theme="crimson"] {



    --bg-color: #0a0000;



    --sidebar-color: #140000;



    --accent-color: #ff3c3c;



    --accent-glow: rgba(255, 60, 60, 0.6);



    --glass: rgba(255, 60, 60, 0.1);



    --card-bg: #1f0505;



}







[data-theme="cybergreen"] {



    --bg-color: #0a1a0a;



    --sidebar-color: #0d2410;



    --accent-color: #00ff3e;



    --accent-glow: rgba(0, 255, 62, 0.6);



    --glass: rgba(0, 255, 62, 0.08);



    --card-bg: #132018;



    --text-dim: #a9c9b3;



}







[data-theme="sunset"] {



    --bg-color: #1a0f08;



    --sidebar-color: #2a1810;



    --accent-color: #ff9500;



    --accent-glow: rgba(255, 149, 0, 0.6);



    --glass: rgba(255, 149, 0, 0.08);



    --card-bg: #3a2415;



    --text-dim: #d4b59f;



}







[data-theme="ocean"] {



    --bg-color: #080f18;



    --sidebar-color: #0a1428;



    --accent-color: #00d4ff;



    --accent-glow: rgba(0, 212, 255, 0.6);



    --glass: rgba(0, 212, 255, 0.08);



    --card-bg: #0f2238;



    --text-dim: #a9d4e8;



}







[data-theme="forest"] {



    --bg-color: #0a140a;



    --sidebar-color: #0f1f0f;



    --accent-color: #2ecc71;



    --accent-glow: rgba(46, 204, 113, 0.6);



    --glass: rgba(46, 204, 113, 0.08);



    --card-bg: #152915;



    --text-dim: #a9d4a9;



}







[data-theme="gold"] {



    --bg-color: #1a1410;



    --sidebar-color: #24190f;



    --accent-color: #ffc107;



    --accent-glow: rgba(255, 193, 7, 0.6);



    --glass: rgba(255, 193, 7, 0.08);



    --card-bg: #2a2015;



    --text-dim: #d4c59f;



}







[data-theme="violet"] {



    --bg-color: #0f0a18;



    --sidebar-color: #16102a;



    --accent-color: #b366ff;



    --accent-glow: rgba(179, 102, 255, 0.6);



    --glass: rgba(179, 102, 255, 0.08);



    --card-bg: #1f1838;



    --text-dim: #c0a9d4;



}







[data-theme="plasma"] {



    --bg-color: #1a0614;



    --sidebar-color: #2a0a1f;



    --accent-color: #ff1493;



    --accent-glow: rgba(255, 20, 147, 0.6);



    --glass: rgba(255, 20, 147, 0.08);



    --card-bg: #3a1428;



    --text-dim: #d4a9c0;



}







[data-theme="abyss"] {



    --bg-color: #060d14;



    --sidebar-color: #091520;



    --accent-color: #00ffe7;



    --accent-glow: rgba(0, 255, 231, 0.55);



    --glass: rgba(0, 255, 231, 0.07);



    --card-bg: #0d2030;



    --text-dim: #a9d4cf;



}







[data-theme="sakura"] {



    --bg-color: #140a10;



    --sidebar-color: #1f1018;



    --accent-color: #ff6eb4;



    --accent-glow: rgba(255, 110, 180, 0.55);



    --glass: rgba(255, 110, 180, 0.08);



    --card-bg: #281520;



    --text-dim: #d4a9c0;



}







[data-theme="ember"] {



    --bg-color: #120800;



    --sidebar-color: #1f0e00;



    --accent-color: #ff5e00;



    --accent-glow: rgba(255, 94, 0, 0.6);



    --glass: rgba(255, 94, 0, 0.08);



    --card-bg: #2a1500;



    --text-dim: #d4b59f;



}







[data-theme="arctic"] {



    --bg-color: #060e14;



    --sidebar-color: #0a1622;



    --accent-color: #a8d8ff;



    --accent-glow: rgba(168, 216, 255, 0.5);



    --glass: rgba(168, 216, 255, 0.07);



    --card-bg: #0e1e30;



    --text-dim: #c0d8f0;



}







[data-theme="matrix"] {



    --bg-color: #000800;



    --sidebar-color: #001200;



    --accent-color: #39ff14;



    --accent-glow: rgba(57, 255, 20, 0.55);



    --glass: rgba(57, 255, 20, 0.07);



    --card-bg: #001a00;



    --text-dim: #80c080;



}







[data-theme="rose"] {



    --bg-color: #130d0d;



    --sidebar-color: #1f1515;



    --accent-color: #ff8fab;



    --accent-glow: rgba(255, 143, 171, 0.55);



    --glass: rgba(255, 143, 171, 0.08);



    --card-bg: #261818;



    --text-dim: #d4a9b5;



}







[data-theme="aurora"] {



    --bg-color: #060f0d;



    --sidebar-color: #0a1a18;



    --accent-color: #00ffa3;



    --accent-glow: rgba(0, 255, 163, 0.55);



    --glass: rgba(0, 255, 163, 0.07);



    --card-bg: #0d2025;



    --text-dim: #a9d4c8;



}







[data-theme="galaxy"] {



    --bg-color: #080612;



    --sidebar-color: #0d0a20;



    --accent-color: #7c6fff;



    --accent-glow: rgba(124, 111, 255, 0.6);



    --glass: rgba(124, 111, 255, 0.08);



    --card-bg: #12103a;



    --text-dim: #b3a9d4;



}







/* --- RESET & CORE --- */



* {



    margin: 0;



    padding: 0;



    box-sizing: border-box;



    font-family: 'Inter', 'Segoe UI', sans-serif;



}







body {



    background-color: var(--bg-color);



    color: var(--text-main);



    overflow: hidden;



    transition: background-color 0.4s ease, color 0.4s ease;



}







.container {

    display: flex;

    flex-direction: column;

    height: calc(100vh / 0.75);

    zoom: 0.75;

}



/* --- TOPBAR --- */



.topbar {

    width: 100%;

    background: var(--sidebar-color);

    display: flex;

    flex-direction: row;

    align-items: center;

    padding: 14px 32px;

    gap: 16px;

    border-bottom: 1px solid rgba(255,255,255,0.06);

    position: sticky;

    top: 0;

    z-index: 300;

    backdrop-filter: blur(20px);

    -webkit-backdrop-filter: blur(20px);

    flex-shrink: 0;

}



.logo {

    display: flex;

    align-items: center;

    gap: 8px;

    font-size: 1.6rem;

    font-weight: 900;

    color: var(--accent-color);

    flex-shrink: 0;

    text-shadow: 0 0 20px var(--accent-glow);

}



.logo i {

    font-size: 2.6rem;

    margin-right: 2px;

}



.version-badge {

    font-size: 0.65rem;

    font-weight: 800;

    padding: 3px 8px;

    border-radius: 999px;

    background: var(--accent-color);

    color: #000;

    cursor: pointer;

    letter-spacing: 0.05em;

    transition: filter 0.15s;

    flex-shrink: 0;

    white-space: nowrap;

}



.version-badge:hover { filter: brightness(1.2); }



.theme-studio-btn {

    display: flex;

    align-items: center;

    gap: 8px;

    padding: 10px 18px;

    border-radius: 999px;

    background: rgba(255, 255, 255, 0.05);

    border: 1px solid rgba(255, 255, 255, 0.1);

    color: rgba(255, 255, 255, 0.8);

    font-size: 0.82rem;

    font-weight: 600;

    cursor: pointer;

    transition: background 0.2s, border-color 0.2s, color 0.2s, box-shadow 0.2s;

    flex-shrink: 0;

    white-space: nowrap;

}



.theme-studio-btn:hover {

    background: var(--accent-color);

    border-color: var(--accent-color);

    color: #000;

    box-shadow: 0 0 14px var(--accent-glow);

}



.search-bar-wrap {



    .rd-help-btn {

        background: none;

        border: none;

        color: rgba(255,255,255,0.25);

        cursor: pointer;

        font-size: 0.9rem;

        padding: 0;

        flex-shrink: 0;

        transition: color 0.15s;

    }



    .rd-help-btn:hover { color: var(--accent-color); }



    .status-indicator {

        width: 8px;

        height: 8px;

        border-radius: 50%;

        background: rgba(255,255,255,0.2);

        flex-shrink: 0;

        transition: background 0.3s, box-shadow 0.3s;

    }



    #ps4-box.connected .status-indicator {

        background: #00e676;

        box-shadow: 0 0 6px #00e676;

    }



    .ps4-display-label {

        font-size: 0.8rem;

        color: rgba(255,255,255,0.6);

        white-space: nowrap;

        overflow: hidden;

        text-overflow: ellipsis;

        flex: 1;

        pointer-events: none;

    }



    /* --- MAIN CONTENT AREA --- */



    .content {

        flex: 1;

        padding: 32px 40px;

        overflow-y: auto;

        background: radial-gradient(circle at top right, var(--glass) 0%, transparent 50%);

    }



    header {

        display: flex;

        justify-content: space-between;

        align-items: center;

        margin-bottom: 40px;

        gap: 20px;

    }



    /* --- FILTER BAR --- */



    .filter-bar {

        display: flex;

        align-items: center;

        flex-wrap: wrap;

        gap: 8px;

        padding: 18px 24px;

        margin-bottom: 32px;

        background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.18) 100%);

        border: 1px solid rgba(255, 255, 255, 0.07);

        border-radius: 20px;

        box-shadow: 0 8px 24px rgba(0,0,0,0.2);

        position: sticky;

        top: 12px;

        z-index: 200;

        backdrop-filter: blur(20px);

        -webkit-backdrop-filter: blur(20px);

    }



    .filter-group {

        display: flex;

        align-items: center;

        gap: 10px;

    }



    .filter-label {

        font-size: 0.72rem;

        font-weight: 800;

        text-transform: uppercase;

        letter-spacing: 0.1em;

        color: var(--text-dim);

        white-space: nowrap;

        display: flex;

        align-items: center;

        gap: 5px;

    }



    .filter-pills {

        display: flex;

        gap: 6px;

    }



    .filter-pill {

        padding: 6px 14px;

        border-radius: 999px;

        border: 1px solid rgba(255,255,255,0.1);

        background: rgba(255,255,255,0.05);

        color: var(--text-dim);

        font-size: 0.8rem;

        font-weight: 700;

        cursor: pointer;

        transition: all 0.2s ease;

        white-space: nowrap;

    }



    .filter-pill:hover {

        border-color: var(--accent-color);

        color: #fff;

        background: rgba(255,255,255,0.08);

    }



    .filter-pill.active {

        background: var(--accent-color);

        border-color: var(--accent-color);

        color: #fff;

        box-shadow: 0 0 14px var(--accent-glow);

    }



    .filter-select {

        padding: 6px 12px;

        border-radius: 12px;

        border: 1px solid rgba(255,255,255,0.1);

        background: rgba(255,255,255,0.05);

        color: #fff;

        font-size: 0.82rem;

        font-weight: 600;

        cursor: pointer;

        outline: none;

        transition: border-color 0.2s ease, box-shadow 0.2s ease;

        -webkit-appearance: none;

        appearance: none;

        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='rgba(255,255,255,0.4)'/%3E%3C/svg%3E");

        background-repeat: no-repeat;

        background-position: right 10px center;

        padding-right: 28px;

    }



    .filter-select:focus {

        border-color: var(--accent-color);

        box-shadow: 0 0 0 2px var(--glass);

    }



    .filter-select option {

        background: var(--sidebar-color);

        color: #fff;

    }



    .filter-results {

        margin-left: auto;

        font-size: 1rem;

        font-weight: 800;

        color: #fff;

        white-space: nowrap;

        letter-spacing: 0.3px;

    }



    .filter-group.filter-pagination {

        padding-left: 16px;

        border-left: 1px solid rgba(255,255,255,0.1);

        gap: 10px;

    }



    #page-indicator {

        font-size: 0.88rem;

        font-weight: 800;

        color: #fff;

        white-space: nowrap;

    }



    display: flex;



    align-items: center;



    gap: 10px;



}



.filter-label {

    font-size: 0.72rem;

    font-weight: 800;

    text-transform: uppercase;



    letter-spacing: 0.1em;



    color: var(--text-dim);



    white-space: nowrap;



    display: flex;



    align-items: center;



    gap: 5px;



}







.filter-pills {



    display: flex;



    gap: 6px;



}







.filter-pill {



    padding: 6px 14px;



    border-radius: 999px;



    border: 1px solid rgba(255,255,255,0.1);



    background: rgba(255,255,255,0.05);



    color: var(--text-dim);



    font-size: 0.8rem;



    font-weight: 700;



    cursor: pointer;



    transition: all 0.2s ease;



    white-space: nowrap;



}







.filter-pill:hover {



    border-color: var(--accent-color);



    color: #fff;



    background: rgba(255,255,255,0.08);



        background: linear-gradient(135deg, white 0%, var(--accent-color) 100%);



        -webkit-background-clip: text;



        -webkit-text-fill-color: transparent;



        background-clip: text;



        position: relative;



        padding-bottom: 15px;



    }







    h2::after {



        content: '';



        position: absolute;



        bottom: 0;



        left: 0;



        width: 60px;



        height: 3px;



        background: linear-gradient(90deg, var(--accent-color) 0%, transparent 100%);



        border-radius: 3px;



    }







    /* --- THE FLEX-ALIGNED GRID --- */



    .grid { 



        display: grid; 



        grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); 



        gap: 30px; 



        align-items: stretch; 



    }







    .game-card {



        background: var(--card-bg);



        border-radius: 18px;



        overflow: hidden;



        border: 1px solid rgba(255, 255, 255, 0.08);



        transition: all 0.35s cubic-bezier(0.165, 0.84, 0.44, 1);



        display: flex;



        flex-direction: column;



        height: 100%;



        cursor: pointer;



    }







    .game-card:hover {



        transform: translateY(-8px);



        box-shadow: 0 24px 48px rgba(0,0,0,0.5), 0 0 24px var(--accent-glow);



    }







    .card-art {



        position: relative;



        width: 100%;



        aspect-ratio: 3 / 2;



        overflow: hidden;



        flex-shrink: 0;



    }







    .card-art img {



        width: 100%;



        height: 100%;



        object-fit: cover;



        display: block;



        background: #111;



        transition: transform 0.4s ease;



    }







    .game-card:hover .card-art img {



        transform: scale(1.05);



    }







    .card-overlay {



        position: absolute;



        bottom: 0;



        left: 0;



        right: 0;



        padding: 48px 16px 16px;



        background: linear-gradient(to top, rgba(0,0,0,0.92) 0%, rgba(0,0,0,0.5) 60%, transparent 100%);



        display: flex;



        flex-direction: column;



        gap: 4px;



    }







    .genre-tag {



        font-size: 0.65rem;



        font-weight: 800;



        text-transform: uppercase;



        letter-spacing: 1.4px;



        color: var(--accent-color);



        background: rgba(0,0,0,0.4);



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



        border-radius: 4px;



        padding: 2px 7px;



        display: inline-block;



        width: fit-content;



        margin-bottom: 4px;



    }







    .game-title {



        font-weight: 800;



        font-size: 1.05rem;



        line-height: 1.3;



        color: #fff;



        display: -webkit-box;



        -webkit-line-clamp: 2;



        line-clamp: 2;



        -webkit-box-orient: vertical;



        overflow: hidden;



        text-shadow: 0 1px 4px rgba(0,0,0,0.8);



    }







    .meta {



        display: flex;



        justify-content: space-between;



        font-size: 0.75rem;



        font-weight: 600;



        color: rgba(255,255,255,0.6);



        margin-top: 6px;



        gap: 6px;



    }



    .meta span {



        display: flex;



        align-items: center;



        gap: 5px;



        background: rgba(0,0,0,0.45);



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



        padding: 3px 9px;



        border-radius: 20px;



        color: rgba(255,255,255,0.9);



    }



    .meta span i {



        color: var(--accent-color);



    }







    /* --- LOADER --- */



    #loader { 



        height: 100vh; 



        width: 100%; 



        background: var(--bg-color); 



        display: flex; 



        flex-direction: column; 



        justify-content: center; 



        align-items: center; 



        position: fixed; 



        top: 0; 



        left: 0; 



        z-index: 9999;



    }







    .spinner {



        display: flex;



        flex-direction: column;



        align-items: center;



        gap: 30px;



    }





    #loader i { 



        font-size: 5rem; 



        color: var(--accent-color); 



        filter: drop-shadow(0 0 20px var(--accent-glow)); 



        animation: psPulse 2s infinite ease-in-out;



        line-height: 1;



    }







    .loading-bar { 



    transform: scale(1.05);



}







.card-overlay {



    position: absolute;



    bottom: 0;



    left: 0;



    right: 0;



    padding: 48px 16px 16px;



    background: linear-gradient(to top, rgba(0,0,0,0.92) 0%, rgba(0,0,0,0.5) 60%, transparent 100%);



    display: flex;



    flex-direction: column;



    gap: 4px;



}







.genre-tag {



    font-size: 0.65rem;



    font-weight: 800;



    text-transform: uppercase;



    letter-spacing: 1.4px;



    color: var(--accent-color);



    background: rgba(0,0,0,0.4);



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



    border-radius: 4px;



    padding: 2px 7px;



    display: inline-block;



    width: fit-content;



    margin-bottom: 4px;



}







.game-title {



    font-weight: 800;



    font-size: 1.05rem;



    line-height: 1.3;



    color: #fff;



    display: -webkit-box;



    -webkit-line-clamp: 2;



    line-clamp: 2;



    -webkit-box-orient: vertical;



    overflow: hidden;



    text-shadow: 0 1px 4px rgba(0,0,0,0.8);



}







.meta {



    display: flex;



    justify-content: space-between;



    font-size: 0.75rem;



    font-weight: 600;



    color: rgba(255,255,255,0.6);



    margin-top: 6px;



    gap: 6px;



}



.meta span {



    display: flex;



    align-items: center;



    gap: 5px;



    background: rgba(0,0,0,0.45);



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



    padding: 3px 9px;



    border-radius: 20px;



    color: rgba(255,255,255,0.9);



}



.meta span i {



    color: var(--accent-color);



}







/* --- LOADER --- */



#loader { 



    height: 100vh; 



    width: 100%; 



    background: var(--bg-color); 



    display: flex; 



    flex-direction: column; 



    justify-content: center; 



    align-items: center; 



    position: fixed; 



    top: 0; 



    left: 0; 



    z-index: 9999;



}







.spinner {



    display: flex;



    flex-direction: column;



    align-items: center;



    gap: 30px;



}







#loader i { 



    font-size: 5rem; 



    color: var(--accent-color); 



    filter: drop-shadow(0 0 20px var(--accent-glow)); 



    animation: psPulse 2s infinite ease-in-out;



    line-height: 1;



}







.loading-bar { 



    width: 200px; 



    height: 3px; 



    background: rgba(255, 255, 255, 0.05); 



    border-radius: 10px; 



    position: relative; 



    overflow: hidden;



}







.loading-bar::after { 



    content: ''; 



    position: absolute; 



    left: -100%; 



    width: 100%; 



    height: 100%; 



    background: linear-gradient(90deg, transparent, var(--accent-color), transparent); 



    animation: barSlide 1.5s infinite; 



}







#loader p {



    color: var(--text-dim);



    font-size: 0.95rem;



    font-weight: 500;



    letter-spacing: 0.5px;



    margin-top: 10px;



}







/* --- ANIMATIONS --- */



@keyframes psPulse { 



    0%, 100% { transform: scale(1); } 



    50% { transform: scale(1.1); } 



}







@keyframes barSlide { 



    0% { left: -100%; } 



    100% { left: 100%; } 



}







header {



    display: flex;



    justify-content: space-between;



    align-items: center;



    margin-bottom: 40px;



    gap: 20px;



}







/* Search Bar Styling */



.search-bar { 



    background: var(--glass);



    padding: 12px 25px;



    border-radius: 15px; 



    display: flex;



    align-items: center;



    gap: 12px;



    flex: 1;



    max-width: 500px;



    border: 1px solid rgba(255, 255, 255, 0.08);



    backdrop-filter: blur(15px);



}







/* Connection Box Styling */



.connection-boxes {



display: flex;



gap: 10px;



align-items: center;



margin-left: auto;



flex-shrink: 0;



}



.connection-boxes .connection-box {



margin-left: 0;



width: 300px;



flex-shrink: 0;



}



.eye-toggle {



    background: none;



    border: none;



    color: rgba(255,255,255,0.35);



    cursor: pointer;



    padding: 0;



    font-size: 1rem;



    flex-shrink: 0;



    display: flex;



    align-items: center;



    transition: color 0.2s;



}



.eye-toggle:hover {



    color: var(--accent-color);



}



.rd-help-btn {



    background: rgba(255,255,255,0.08);



    border: 1.5px solid rgba(255,255,255,0.18);



    color: rgba(255,255,255,0.8);



    cursor: pointer;



    padding: 0;



    font-size: 1.2rem;



    flex-shrink: 0;



    display: flex;



    align-items: center;



    justify-content: center;



    width: 28px;



    height: 28px;



    border-radius: 50%;



    transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;



}



.rd-help-btn:hover {



    background: var(--accent-color);



    border-color: var(--accent-color);



    color: #000;



    box-shadow: 0 0 12px var(--accent-glow);



}



.rd-help-modal-content {



    width: 380px !important;



    max-width: 92vw;



    overflow: hidden;



    padding: 0 !important;



}



.rd-help-header {



    display: flex;



    align-items: center;



    justify-content: center;



    padding: 20px 60px 18px;



    border-bottom: 1px solid rgba(255,255,255,0.07);



    position: relative;



    text-align: center;



}



.rd-help-header-icon {



    position: absolute;



    left: 18px;



    top: 50%;



    transform: translateY(-50%);



    width: 40px;



    height: 40px;



    border-radius: 12px;



    background: linear-gradient(135deg, var(--accent-color), var(--accent-glow));



    display: flex;



    align-items: center;



    justify-content: center;



    flex-shrink: 0;



    box-shadow: 0 0 16px var(--accent-glow);



}



.rd-help-header-icon i {



    color: #000 !important;



    font-size: 1.1rem !important;



}



.rd-help-title {



    font-size: 0.98rem;



    font-weight: 700;



    color: #fff;



    margin: 0 0 2px;



    line-height: 1.2;



}



.rd-help-subtitle {



    font-size: 0.75rem;



    color: var(--text-dim);



    margin: 0;



    font-weight: 500;



}



.rd-close-btn {



    position: absolute;



    top: 50%;



    right: 16px;



    transform: translateY(-50%);



    color: rgba(255,255,255,0.45);



    cursor: pointer;



    font-size: 2rem;



    flex-shrink: 0;



    transition: color 0.2s;



    line-height: 1;



}



.rd-close-btn:hover {



    color: #fff;



}



.rd-help-body {



    display: flex;



    flex-direction: column;



    align-items: center;



    gap: 20px;



    padding: 24px 22px 22px;



    background: radial-gradient(ellipse at 50% 0%, rgba(var(--accent-rgb, 157,80,255),0.08) 0%, transparent 70%);



}



.rd-qr-frame {



    position: relative;



    padding: 16px;



}



.rd-qr-frame::before {



    content: '';



    position: absolute;



    inset: 0;



    background:



        linear-gradient(var(--accent-color), var(--accent-color)) top left / 22px 3px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) top left / 3px 22px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) top right / 22px 3px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) top right / 3px 22px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) bottom left / 22px 3px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) bottom left / 3px 22px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) bottom right / 22px 3px no-repeat,



        linear-gradient(var(--accent-color), var(--accent-color)) bottom right / 3px 22px no-repeat;



    border-radius: 6px;



}



.rd-qr-wrapper {



    padding: 14px;



    background: #fff;



    border-radius: 10px;



    line-height: 0;



    box-shadow: 0 4px 24px rgba(0,0,0,0.5);



}



.rd-qr-code {



    width: 190px;



    height: 190px;



    display: block;



    border-radius: 4px;



}



.rd-scan-label {



    display: flex;



    align-items: center;



    gap: 6px;



    font-size: 0.75rem;



    font-weight: 600;



    color: var(--text-dim);



    letter-spacing: 0.5px;



    text-transform: uppercase;



}



.rd-scan-label i {



    color: var(--accent-color);



    font-size: 0.9rem;



}



.rd-help-link {



    display: flex;



    align-items: center;



    gap: 8px;



    font-size: 0.85rem;



    font-weight: 700;



    color: var(--accent-color);



    text-decoration: none;



    padding: 10px 24px;



    border: 1.5px solid var(--accent-color);



    border-radius: 999px;



    background: rgba(255,255,255,0.04);



    transition: background 0.2s, box-shadow 0.2s, color 0.2s;



    letter-spacing: 0.3px;



    width: 100%;



    justify-content: center;



    box-sizing: border-box;



}



.rd-help-link:hover {



    background: var(--accent-color);



    color: #000;



    box-shadow: 0 0 20px var(--accent-glow);



}



.connection-box {



background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.3) 100%);



padding: 14px 22px;



    border-radius: 18px;



    display: flex;



    align-items: center;



    gap: 14px;



    border: 1.5px solid var(--accent-color);



    box-shadow: 0 0 18px var(--accent-glow), 0 4px 16px rgba(0,0,0,0.3);



    transition: 0.3s;



    width: 300px;



    margin-left: 0;



}







.connection-box:focus-within {



    border-color: var(--accent-color);



    box-shadow: 0 0 28px var(--accent-glow), 0 6px 24px rgba(0,0,0,0.4);



    background: var(--glass);



}







.connection-box input {



    background: transparent;



    border: none;



    color: white;



    font-size: 0.92rem;



    font-weight: 600;



    outline: none;



    width: 100%;



    font-family: 'Inter', 'Segoe UI', sans-serif;



    letter-spacing: 0.3px;



}







#rd-token:not(:focus) {



color: transparent;



text-shadow: 0 0 8px rgba(255,255,255,0.55);



}



.connection-box input::placeholder {



color: rgba(255,255,255,0.45);



font-weight: 500;



}



.connection-box select {

background: transparent;

border: none;

color: white;

font-size: 0.88rem;

font-weight: 600;

outline: none;

width: 100%;

font-family: 'Inter', 'Segoe UI', sans-serif;

letter-spacing: 0.3px;

cursor: pointer;

-webkit-appearance: none;

appearance: none;

}



.connection-box select option {

background: #160e2c;

color: white;

font-weight: 500;

}



.ps4-scan-btn {

background: transparent;

border: none;

color: var(--accent-color);

cursor: pointer;

padding: 0;

font-size: 1.1rem;

line-height: 1;

opacity: 0.75;

transition: opacity 0.2s, transform 0.2s;

flex-shrink: 0;

}



.ps4-scan-btn:hover {

opacity: 1;

transform: scale(1.15);

}



.ps4-scan-btn:disabled {

cursor: not-allowed;

opacity: 0.4;

transform: none;

}



@keyframes ps4-spin {

from { transform: rotate(0deg); }

to   { transform: rotate(360deg); }

}



.ps4-scanning {

display: inline-block;

animation: ps4-spin 0.8s linear infinite;

}



.ps4-display-label {

    flex: 1;

    font-size: 0.88rem;

    font-weight: 600;

    color: white;

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    letter-spacing: 0.2px;

}



.ps4-modal-content {

    width: 420px;

    max-width: 95vw;

    border-radius: 18px;

    overflow: hidden;

    background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.4) 100%);

    border: 1px solid rgba(255,255,255,0.08);

    backdrop-filter: blur(30px);

    -webkit-backdrop-filter: blur(30px);

}



.ps4-modal-content .modal-header {

    padding: 20px 20px 16px;

}



.ps4-modal-body {

    display: flex;

    flex-direction: column;

    gap: 6px;

    padding: 8px 20px 20px;

}



.ps4-picker-item {

    display: flex;

    align-items: center;

    gap: 14px;

    padding: 13px 18px;

    cursor: pointer;

}



.ps4-picker-item:hover {

background: color-mix(in srgb, var(--accent-color) 8%, transparent);

}



.ps4-picker-item.active {

background: color-mix(in srgb, var(--accent-color) 18%, transparent);

border-color: color-mix(in srgb, var(--accent-color) 35%, transparent);

}



.ps4-picker-item > i:first-child {

font-size: 1.4rem;

color: var(--accent-color);

flex-shrink: 0;

}



.ps4-picker-item-inner {

display: flex;

flex-direction: column;

gap: 2px;

flex: 1;

}



.ps4-item-name {

font-size: 0.9rem;

font-weight: 700;

color: white;

}



.ps4-item-ip {

font-size: 0.78rem;

font-weight: 500;

color: var(--accent-color);

opacity: 0.85;

font-family: 'Rajdhani', monospace;

letter-spacing: 0.5px;

}



.ps4-check {

font-size: 1rem;

color: var(--accent-color);

flex-shrink: 0;

}



.ps4-picker-empty {

display: flex;

align-items: center;

justify-content: center;

gap: 10px;

padding: 24px 18px;

font-size: 0.85rem;

font-weight: 500;

color: rgba(255,255,255,0.4);

font-style: italic;

}



.ps4-modal-scan-btn {

display: flex;

align-items: center;

justify-content: center;

gap: 10px;

width: 100%;

padding: 13px 0;

margin-top: 8px;

background: transparent;

border: 1.5px solid var(--accent-color);

border-radius: 12px;

color: var(--accent-color);

font-size: 0.85rem;

font-weight: 700;

font-family: 'Inter', 'Segoe UI', sans-serif;

letter-spacing: 0.5px;

text-transform: uppercase;

cursor: pointer;

transition: background 0.2s, box-shadow 0.2s;

}



.ps4-modal-scan-btn:hover:not(:disabled) {

background: color-mix(in srgb, var(--accent-color) 15%, transparent);

box-shadow: 0 0 16px var(--accent-glow);

}



.ps4-modal-scan-btn:disabled {

opacity: 0.45;

cursor: not-allowed;

}



.connection-box i {



color: var(--accent-color);



    font-size: 1.3rem;



    flex-shrink: 0;



}







/* The "Live" Status Dot */



.status-indicator {



    width: 8px;



    height: 8px;



    border-radius: 50%;



    background: #444; /* Default off color */



    transition: 0.3s;



}







/* When IP is entered (logic in JS below) */



.connection-box.active .status-indicator {



background: #00ff88; /* PlayStation green */



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



}







/* Red: Failed */



.connection-box.failed .status-indicator {



background: #ff3c3c;



box-shadow: 0 0 12px #ff3c3c;



}







/* Green: Connected with Pulse */



.connection-box.connected .status-indicator {



    background: #00ff88;



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



    animation: active-glow 2s infinite ease-in-out;



}







/* Red: Failed with a Sharp Glow */



.connection-box.failed .status-indicator {



    background: #ff3c3c;



    box-shadow: 0 0 15px rgba(255, 60, 60, 0.8);



    animation: none; /* Stop pulsing if failed */



}







@keyframes active-glow {



    0% { transform: scale(1); opacity: 1; }



    50% { transform: scale(1.2); opacity: 0.7; box-shadow: 0 0 18px #00ff88; }



    100% { transform: scale(1); opacity: 1; }



}







@keyframes pulse-amber {



    0% { opacity: 1; transform: scale(1); }



    50% { opacity: 0.5; transform: scale(0.8); }



    100% { opacity: 1; transform: scale(1); }



}







.pkg-link-item span { font-weight: 600; font-size: 0.9rem; }



.pkg-link-item i { color: var(--accent-color); font-size: 1.2rem; }







/* --- THEME STUDIO --- */



.themes-container {



    display: flex;



    flex-direction: column;



    gap: 40px;



}







.themes-container.modal-scrollable .themes-section {



    display: flex;



    flex-direction: column;



    gap: 18px;



    padding: 30px;



    background: linear-gradient(135deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.01) 100%);



    border-radius: 24px;



    border: 1px solid rgba(255, 255, 255, 0.08);



    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);



    position: relative;



    overflow: hidden;



}







.modal-scrollable .themes-section::before {



    content: '';



    position: absolute;



    top: -50%;



    right: -50%;



    width: 200px;



    height: 200px;



    background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);



    opacity: 0.05;



    border-radius: 50%;



    pointer-events: none;



}







.themes-section h4 {



    font-size: 1.1rem;



    font-weight: 800;



    text-transform: uppercase;



    letter-spacing: 2px;



    color: #ffffff;



    margin: 0;



    display: flex;



    align-items: center;



    gap: 12px;



    position: relative;



    z-index: 1;



}







.themes-section h4 i {



    font-size: 1.3rem;



    filter: drop-shadow(0 0 8px var(--accent-glow));



}







.themed-grid {



    display: grid;



    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));



    gap: 18px;



    position: relative;



    z-index: 1;



}







.theme-preview {



    aspect-ratio: 1;



    border-radius: 18px;



    border: 2px solid rgba(255, 255, 255, 0.15);



    cursor: pointer;



    transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);



    overflow: hidden;



    display: flex;



    flex-direction: column;



    position: relative;



    background: linear-gradient(135deg, rgba(255,255,255,0.08) 0%, rgba(0,0,0,0.3) 100%);



    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);



}







.theme-preview::after {



    content: '';



    position: absolute;



    top: 0;



    left: 0;



    right: 0;



    bottom: 0;



    background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 100%);



    opacity: 0;



    transition: opacity 0.5s ease;



    pointer-events: none;



}







.theme-preview:hover {



    transform: translateY(-12px) scale(1.05);



    border-color: var(--accent-color);



    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5), 0 0 40px var(--accent-glow);



}







.theme-preview:hover::after {



    opacity: 1;



}







.theme-preview.active {



    border-color: var(--accent-color);



    box-shadow: 0 0 40px var(--accent-glow), inset 0 0 30px rgba(255, 255, 255, 0.08), 0 15px 40px rgba(0, 0, 0, 0.4);



    transform: scale(1.02);



}







.theme-preview-ui {



    display: flex;



    flex: 1;



    overflow: hidden;



    position: relative;



    border-radius: 15px 15px 0 0;



    transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);



}







.theme-preview:hover .theme-preview-ui {



    transform: scale(1.05);



}







.preview-sidebar {



    width: 25%;



    height: 100%;



    display: flex;



    justify-content: center;



    padding-top: 15px;



    border-right: 1px solid rgba(255, 255, 255, 0.05);



    z-index: 2;



}







.preview-logo {



    width: 14px;



    height: 14px;



    background: currentColor;



    mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22.5 13.5c-1.3 0-2.4-1.1-2.4-2.4s1.1-2.4 2.4-2.4 2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zm-21 0C.2 13.5-.9 12.4-.9 11.1s1.1-2.4 2.4-2.4 2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zM12 21.6c-1.3 0-2.4-1.1-2.4-2.4s1.1-2.4 2.4-2.4 2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zm0-17.1c-1.3 0-2.4-1.1-2.4-2.4S10.7-.3 12-.3s2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zM7.5 15.6c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm9 0c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm-4.5-5.1c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/></svg>') no-repeat center / contain;



    -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.001 2.001A10.003 10.003 0 0 0 2 12.001a10.003 10.003 0 0 0 10.001 10.001 10.003 10.003 0 0 0 10.001-10.001A10.003 10.003 0 0 0 12.001 2.001zm0 18a7.997 7.997 0 0 1-7.999-7.999 7.997 7.997 0 0 1 7.999-7.999 7.997 7.997 0 0 1 7.999 7.999 7.997 7.997 0 0 1-7.999 7.999z"/></svg>') no-repeat center / contain; /* Simplified mask for now */



}







.preview-content {



    flex: 1;



    display: flex;



    flex-direction: column;



    padding: 10px;



    gap: 8px;



    position: relative;



}







/* --- GAME DETAIL MODAL --- */



.game-detail-modal {



max-width: 480px !important;



width: 100%;



}







.game-detail-modal .themes-modal-content {



max-height: 96vh;



overflow: hidden;



}







.game-detail-compact {



display: flex;



flex-direction: column;



padding: 16px 20px;



gap: 0;



}







.compact-art {



border-radius: 14px;



overflow: hidden;



width: 100%;



aspect-ratio: 3 / 2;



background: #111;



border: 1px solid rgba(255,255,255,0.08);



box-shadow: 0 8px 28px rgba(0,0,0,0.5);



position: relative;



}







.compact-art img {



width: 100%;



height: 100%;



object-fit: cover;



object-position: center center;



display: block;



}







.modal-close-btn {



position: absolute;



top: 12px;



right: 12px;



z-index: 10;



background: rgba(0,0,0,0.55);



border: 1px solid rgba(255,255,255,0.18);



color: white;



width: 32px;



height: 32px;



border-radius: 50%;



cursor: pointer;



display: flex;



align-items: center;



justify-content: center;



font-size: 1.1rem;



transition: background 0.2s;



}



.modal-close-btn:hover {



background: rgba(255,255,255,0.22);



}



.compact-art-badges {



display: flex;



gap: 8px;



align-items: center;



}



.compact-platform-badge {



font-size: 0.68rem;



font-weight: 800;



text-transform: uppercase;



letter-spacing: 1.5px;



color: var(--accent-color);



border: 1.5px solid var(--accent-color);



border-radius: 5px;



padding: 4px 11px;



background: rgba(0,0,0,0.45);



}



.compact-art-overlay {



position: absolute;



bottom: 0;



left: 0;



right: 0;



padding: 60px 18px 18px;



background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.55) 50%, transparent 100%);



display: flex;



flex-direction: column;



gap: 7px;



}







.compact-art-title {



font-size: 1.35rem;



font-weight: 800;



color: #fff;



line-height: 1.2;



margin: 0;



text-shadow: 0 2px 10px rgba(0,0,0,0.6);



}







.compact-art-meta {



display: flex;



justify-content: space-between;



align-items: center;



}







.compact-art-meta .compact-size,



.compact-art-meta .compact-update {



background: rgba(0,0,0,0.45);



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



padding: 3px 10px;



border-radius: 20px;



font-size: 0.75rem;



color: rgba(255,255,255,0.9);



gap: 5px;



}







.compact-genre {



font-size: 0.68rem;



font-weight: 800;



text-transform: uppercase;



letter-spacing: 1.5px;



color: var(--accent-color);



border: 1.5px solid var(--accent-color);



border-radius: 5px;



padding: 4px 11px;



background: rgba(0,0,0,0.45);



align-self: flex-start;



}







.compact-size,



.compact-update {



font-size: 0.78rem;



color: rgba(255,255,255,0.7);



display: flex;



align-items: center;



gap: 5px;



}







.compact-platform::before {



content: '\f2b8';



font-family: 'remixicon';



color: var(--accent-color);



font-size: 0.9rem;



}







.compact-size::before {



content: '\f1b7';



font-family: 'remixicon';



color: var(--accent-color);



font-size: 0.9rem;



}







.compact-update::before {



content: '\f2a6';



font-family: 'remixicon';



color: var(--accent-color);



font-size: 0.9rem;



}







.compact-desc {



font-size: 0.88rem;



color: rgba(255,255,255,0.72);



line-height: 1.65;



margin: 2px 0 0;



display: -webkit-box;



-webkit-line-clamp: 2;



line-clamp: 2;



-webkit-box-orient: vertical;



overflow: hidden;



}







.compact-downloads {



padding: 16px 28px 24px;



border-top: 1px solid rgba(255,255,255,0.07);



}







.compact-downloads h4 {



font-size: 0.72rem;



font-weight: 800;



margin: 0 0 12px;



display: flex;



align-items: center;



gap: 7px;



text-transform: uppercase;



letter-spacing: 1.5px;



color: rgba(255,255,255,0.45);



}







.compact-downloads h4 i {



color: var(--accent-color);



font-size: 1rem;



}







.compact-downloads .link-list {



display: flex;



flex-direction: column;



gap: 10px;



overflow: visible;



}







.dl-section {



border-radius: 12px;



border: 1px solid rgba(255,255,255,0.07);



overflow: hidden;



background: rgba(255,255,255,0.025);



}







.dl-section-header {



width: 100%;



background: none;



border: none;



padding: 13px 16px;



display: flex;



align-items: center;



gap: 10px;



cursor: pointer;



color: white;



transition: background 0.2s;



}







.dl-section-header:hover {



background: rgba(255,255,255,0.05);



}







.dl-section-label {



flex: 1;



font-weight: 700;



font-size: 0.85rem;



display: flex;



align-items: center;



gap: 8px;



text-align: left;



}







.dl-section-label i {



color: var(--accent-color);



font-size: 1rem;



}







.dl-count {



background: rgba(255,255,255,0.08);



color: rgba(255,255,255,0.55);



font-size: 0.72rem;



font-weight: 700;



padding: 2px 8px;



border-radius: 20px;



min-width: 22px;



text-align: center;



}







.dl-arrow {



color: rgba(255,255,255,0.35);



font-size: 1.1rem;



transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);



flex-shrink: 0;



}







.dl-section.open .dl-arrow {



transform: rotate(180deg);



}







.dl-section-body {



max-height: 0;



overflow: hidden;



transition: max-height 0.32s cubic-bezier(0.4, 0, 0.2, 1);



}



.dl-section.instant-close .dl-section-body {



transition: none;



}







.dl-section.open .dl-section-body {



max-height: 480px;



}







.dl-section-body .pkg-link-item {



border-radius: 0;



border-top: 1px solid rgba(255,255,255,0.05);



border-left: none;



border-right: none;



border-bottom: none;



}







.dl-section-body .pkg-link-item:last-child {



border-radius: 0 0 11px 11px;



}







@media (max-width: 560px) {



.game-detail-compact {



padding: 18px 22px;



}



.compact-art {



max-height: 200px;



}



.compact-downloads {



padding: 0 22px 18px;



}



}







.download-btn {



width: 100%;



background: rgba(255,255,255,0.06);



color: rgba(255,255,255,0.85);



border: none;



border-top: 1px solid rgba(255,255,255,0.07);



padding: 14px 16px;



border-radius: 0 0 18px 18px;



font-weight: 700;



font-size: 0.82rem;



cursor: pointer;



display: flex;



align-items: center;



justify-content: center;



gap: 8px;



transition: all 0.2s ease;



letter-spacing: 0.4px;



flex-shrink: 0;



}







.download-btn:hover {



background: var(--accent-color);



color: #fff;



box-shadow: 0 0 16px var(--accent-glow);



}







.download-btn:active {



    filter: brightness(0.9);



}







/* Only apply hover effects on devices that actually have a mouse */



@media (hover: hover) {



    .download-btn:hover {



        transform: translateY(-2px);



    }



}







/* Use :active for touch feedback instead */



.download-btn:active {



    transform: scale(0.95);



    opacity: 0.8;



}







.install-btn {



    background: var(--accent-color);



    color: white;



    border: none;



    padding: 9px 18px;



    border-radius: 10px;



    font-weight: 700;



    font-size: 0.8rem;



    cursor: pointer;



    display: inline-flex;



    align-items: center;



    justify-content: center;



    gap: 6px;



    transition: all 0.2s ease;



    box-shadow: 0 4px 14px rgba(0,0,0,0.35);



    min-width: 100px;



    flex-shrink: 0;



    letter-spacing: 0.3px;



}







.install-btn i {



    font-size: 0.9rem;



    line-height: 1;



    display: inline-block;



    color: white !important;



}







.install-btn:hover {



    filter: brightness(1.15);



    box-shadow: 0 6px 16px var(--accent-glow);



    transform: translateY(-2px);



}







.install-btn:active {



    transform: scale(0.95);



    opacity: 0.8;



}







/* --- IP INDICATOR STATES --- */



.status-indicator {



    width: 10px;



    height: 8px;



    border-radius: 50%;



    background: #444; /* Default: Disconnected */



    transition: 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);



}







/* Amber: Waiting/Connecting */



.connection-box.waiting .status-indicator {



    background: #ffb100;



    box-shadow: 0 0 12px #ffb100;



    animation: pulse-amber 1.5s infinite;



}







/* Green: Connected */



.connection-box.connected .status-indicator {



    background: #00ff88;



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



}







/* Red: Failed */



.connection-box.failed .status-indicator {



    background: #ff3c3c;



    box-shadow: 0 0 12px #ff3c3c;



}







/* Green: Connected with Pulse */



.connection-box.connected .status-indicator {



    background: #00ff88;



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



    animation: active-glow 2s infinite ease-in-out;



}







/* Red: Failed with a Sharp Glow */



.connection-box.failed .status-indicator {



    background: #ff3c3c;



    box-shadow: 0 0 15px rgba(255, 60, 60, 0.8);



    animation: none; /* Stop pulsing if failed */



}







@keyframes active-glow {



    0% { transform: scale(1); opacity: 1; }



    50% { transform: scale(1.2); opacity: 0.7; box-shadow: 0 0 18px #00ff88; }



    100% { transform: scale(1); opacity: 1; }



}







@keyframes pulse-amber {



    0% { opacity: 1; transform: scale(1); }



    50% { opacity: 0.5; transform: scale(0.8); }



    100% { opacity: 1; transform: scale(1); }



}







.pkg-link-item span { font-weight: 600; font-size: 0.9rem; }



.pkg-link-item i { color: var(--accent-color); font-size: 1.2rem; }







/* --- MODAL SYSTEM --- */



.modal-overlay {



    position: fixed;



    top: 0; left: 0; width: 100%; height: 100%;



    background: rgba(0,0,0,0.85);



    backdrop-filter: blur(12px);



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



    z-index: 10000; padding: 20px;



    opacity: 0;



    transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);



}







.modal-overlay[style*="display: flex"] {



    opacity: 1;



}







.modal-content {



    background: var(--sidebar-color);



    width: 100%; max-width: 500px;



    border-radius: 30px;



    border: 1px solid rgba(255,255,255,0.1);



    padding: 30px;



    box-shadow: 0 20px 50px rgba(0,0,0,0.5);



    animation: modalSlideIn 0.3s ease;



}







.themes-modal-content {



    background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.4) 100%);



    width: 100%; 



    max-width: 950px;



    border-radius: 32px;



    border: 1px solid rgba(255,255,255,0.12);



    box-shadow: 0 30px 60px rgba(0,0,0,0.6), 0 0 40px var(--accent-glow);



    animation: modalSlideIn 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);



    max-height: 85vh;



    position: relative;



    display: flex;



    flex-direction: column;



    overflow: hidden;



    color: #ffffff; /* Force text color to white */



}







.themes-modal-content::before {



    content: '';



    position: absolute;



    top: -100px;



    right: -100px;



    width: 400px;



    height: 400px;



    background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);



    opacity: 0.08;



    border-radius: 50%;



    pointer-events: none;



}







.themes-modal-content header {



    flex-shrink: 0;



    margin: 0;



    padding: 30px 40px 20px 40px;



    border-bottom: 1px solid rgba(255, 255, 255, 0.1);



    display: flex;



    justify-content: space-between;



    align-items: center;



}







.themes-modal-content header h3 {



    font-size: 1.4rem;



    font-weight: 800;



    margin: 0;



    color: #ffffff;



}







.themes-modal-content header i {



    font-size: 1.6rem;



    cursor: pointer;



    opacity: 0.6;



    transition: all 0.3s ease;



}







.themes-modal-content header i:hover {



    opacity: 1;



    color: var(--accent-color);



    transform: scale(1.1);



}







/* --- SCROLLABLE CONTENT --- */



.themes-container.modal-scrollable {



    flex: 1;



    overflow-y: auto;



    overflow-x: hidden;



    padding: 40px 32px 40px 40px;



    display: block;



    min-height: 0;



}







/* Scrollbar styling for theme modal */



.themes-container.modal-scrollable::-webkit-scrollbar {



    width: 8px;



}







.themes-container.modal-scrollable::-webkit-scrollbar-track {



    background: transparent;



}







.themes-container.modal-scrollable::-webkit-scrollbar-thumb {



    background: linear-gradient(135deg, var(--accent-color) 0%, brightness(1.1) 100%);



    border-radius: 4px;



    border: 1px solid rgba(255, 255, 255, 0.2);



    transition: all 0.3s ease;



}







.themes-container.modal-scrollable::-webkit-scrollbar-thumb:hover {



    background: linear-gradient(135deg, brightness(1.2), var(--accent-color));



    border-color: rgba(255, 255, 255, 0.35);



    box-shadow: 0 0 10px var(--accent-glow);



}







.themes-container.modal-scrollable {



    scrollbar-color: var(--accent-color) transparent;



    scrollbar-width: thin;



}







@keyframes modalSlideIn {



    from {



        transform: translateY(-30px) scale(0.95);



        opacity: 0;



        filter: blur(10px);



    }



    to {



        transform: translateY(0) scale(1);



        opacity: 1;



        filter: blur(0);



    }



}







.modal-header {



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



    margin-bottom: 25px;



}







.modal-header i { font-size: 1.8rem; cursor: pointer; opacity: 0.5; transition: 0.3s; }







.modal-header i:hover { opacity: 1; color: var(--accent-color); }







.link-list { display: flex; flex-direction: column; gap: 12px; }







.pkg-link-item {



    background: var(--glass);



    padding: 15px 20px;



    border-radius: 15px;



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



    text-decoration: none; color: white;



    border: 1px solid rgba(255,255,255,0.05);



    transition: 0.3s;



}







.pkg-link-item span { font-weight: 600; font-size: 0.9rem; }



.pkg-link-item i { color: var(--accent-color); font-size: 1.2rem; }







/* --- THEME STUDIO --- */



.themes-container {



    display: flex;



    flex-direction: column;



    gap: 40px;



}







.themes-container.modal-scrollable .themes-section {



    display: flex;



    flex-direction: column;



    gap: 18px;



    padding: 30px;



    background: linear-gradient(135deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.01) 100%);



    border-radius: 24px;



    border: 1px solid rgba(255, 255, 255, 0.08);



    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);



    position: relative;



    overflow: hidden;



}







.modal-scrollable .themes-section::before {



    content: '';



    position: absolute;



    top: -50%;



    right: -50%;



    width: 200px;



    height: 200px;



    background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);



    opacity: 0.05;



    border-radius: 50%;



    pointer-events: none;



}







.themes-section h4 {



    font-size: 1.1rem;



    font-weight: 800;



    text-transform: uppercase;



    letter-spacing: 2px;



    color: #ffffff;



    margin: 0;



    display: flex;



    align-items: center;



    gap: 12px;



    position: relative;



    z-index: 1;



}







.themes-section h4 i {



    font-size: 1.3rem;



    filter: drop-shadow(0 0 8px var(--accent-glow));



}







.themed-grid {



    display: grid;



    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));



    gap: 18px;



    position: relative;



    z-index: 1;



}







.theme-preview {



    aspect-ratio: 1;



    border-radius: 18px;



    border: 2px solid rgba(255, 255, 255, 0.15);



    cursor: pointer;



    transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);



    overflow: hidden;



    display: flex;



    flex-direction: column;



    position: relative;



    background: linear-gradient(135deg, rgba(255,255,255,0.08) 0%, rgba(0,0,0,0.3) 100%);



    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);



}







.theme-preview::after {



    content: '';



    position: absolute;



    top: 0;



    left: 0;



    right: 0;



    bottom: 0;



    background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 100%);



    opacity: 0;



    transition: opacity 0.5s ease;



    pointer-events: none;



}







.theme-preview:hover {



    transform: translateY(-12px) scale(1.05);



    border-color: var(--accent-color);



    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5), 0 0 40px var(--accent-glow);



}







.theme-preview:hover::after {



    opacity: 1;



}







.theme-preview.active {



    border-color: var(--accent-color);



    box-shadow: 0 0 40px var(--accent-glow), inset 0 0 30px rgba(255, 255, 255, 0.08), 0 15px 40px rgba(0, 0, 0, 0.4);



    transform: scale(1.02);



}







.theme-preview-ui {



    display: flex;



    flex: 1;



    overflow: hidden;



    position: relative;



    border-radius: 15px 15px 0 0;



    transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);



}







.theme-preview:hover .theme-preview-ui {



    transform: scale(1.05);



}







.preview-sidebar {



    width: 25%;



    height: 100%;



    display: flex;



    justify-content: center;



    padding-top: 15px;



    border-right: 1px solid rgba(255, 255, 255, 0.05);



    z-index: 2;



}







.preview-logo {



    width: 14px;



    height: 14px;



    background: currentColor;



    mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22.5 13.5c-1.3 0-2.4-1.1-2.4-2.4s1.1-2.4 2.4-2.4 2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zm-21 0C.2 13.5-.9 12.4-.9 11.1s1.1-2.4 2.4-2.4 2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zM12 21.6c-1.3 0-2.4-1.1-2.4-2.4s1.1-2.4 2.4-2.4 2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zm0-17.1c-1.3 0-2.4-1.1-2.4-2.4S10.7-.3 12-.3s2.4 1.1 2.4 2.4-1.1 2.4-2.4 2.4zM7.5 15.6c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm9 0c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm-4.5-5.1c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/></svg>') no-repeat center / contain;



    -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.001 2.001A10.003 10.003 0 0 0 2 12.001a10.003 10.003 0 0 0 10.001 10.001 10.003 10.003 0 0 0 10.001-10.001A10.003 10.003 0 0 0 12.001 2.001zm0 18a7.997 7.997 0 0 1-7.999-7.999 7.997 7.997 0 0 1 7.999-7.999 7.997 7.997 0 0 1 7.999 7.999 7.997 7.997 0 0 1-7.999 7.999z"/></svg>') no-repeat center / contain; /* Simplified mask for now */



}







.preview-content {



    flex: 1;



    display: flex;



    flex-direction: column;



    padding: 10px;



    gap: 8px;



    position: relative;



}







.preview-content::before {



    content: '';



    position: absolute;



    top: 0;



    right: 0;



    bottom: 0;



    left: 0;



    background: radial-gradient(circle at top right, rgba(255,255,255,0.05) 0%, transparent 50%);



    pointer-events: none;



}







.preview-header {



    display: flex;



    justify-content: flex-end;



}







.preview-search {



    width: 60%;



    height: 12px;



    border-radius: 6px;



    border: 1px solid;



}







.preview-grid {



    display: grid;



    grid-template-columns: 1fr 1fr;



    gap: 6px;



    flex: 1;



}







.preview-card {



border-radius: 4px;



border: 1px solid;



box-shadow: 0 2px 5px rgba(0,0,0,0.2);



display: flex;



flex-direction: column;



justify-content: flex-end;



padding: 4px;



gap: 2px;



}







.preview-text-line {



width: 80%;



height: 4px;



border-radius: 2px;



background-color: #fff;



}







.preview-text-line.short {



width: 50%;



}







.theme-preview-footer {



height: 36px;



background: var(--sidebar-color);



display: flex;



align-items: center;



justify-content: space-between;



gap: 8px;



padding: 0 10px;



position: relative;



z-index: 2;



border-top: 1px solid rgba(255, 255, 255, 0.05);



}







.theme-preview-label {



font-size: 0.75rem;



font-weight: 700;



color: white;



white-space: nowrap;



overflow: hidden;



text-overflow: ellipsis;



text-transform: capitalize;



letter-spacing: 0.5px;



flex: 1;



}







.preview-glow-indicator {



width: 12px;



height: 12px;



border-radius: 50%;



border: 1px solid rgba(255, 255, 255, 0.35);



flex-shrink: 0;



background: var(--accent-glow);



}







.delete-theme-btn {



width: 22px;



height: 22px;



border-radius: 6px;



border: none;



background: rgba(255, 59, 59, 0.85);



color: white;



cursor: pointer;



display: flex;



align-items: center;



justify-content: center;



opacity: 0;



transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);



padding: 0;



font-size: 0.82rem;



}







.copy-code-btn {



width: 22px;



height: 22px;



border-radius: 6px;



border: none;



background: rgba(0, 200, 190, 0.85);



color: white;



cursor: pointer;



display: flex;



align-items: center;



justify-content: center;



opacity: 0;



transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);



padding: 0;



font-size: 0.82rem;



}



.copy-code-btn:hover {



background: rgba(0, 200, 190, 1);



transform: scale(1.1) translateY(-3px);



box-shadow: 0 6px 16px rgba(0, 200, 190, 0.5);



}







.edit-theme-btn {



width: 22px;



height: 22px;



border-radius: 6px;



border: none;



background: rgba(100, 150, 255, 0.85);



color: white;



cursor: pointer;



display: flex;



align-items: center;



justify-content: center;



opacity: 0;



transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);



padding: 0;



font-size: 0.82rem;



}







.theme-actions {



display: flex;



gap: 4px;



align-items: center;



max-width: 0;



overflow: hidden;



transition: max-width 0.22s ease;



}



.theme-preview:hover .theme-actions {



max-width: 90px;



}







.theme-preview:hover .copy-code-btn,



.theme-preview:hover .edit-theme-btn,



.theme-preview:hover .delete-theme-btn {



opacity: 1;



}







.delete-theme-btn:hover {



background: rgba(255, 59, 59, 1);



transform: scale(1.1) translateY(-3px);



box-shadow: 0 6px 16px rgba(255, 59, 59, 0.5);



}







.edit-theme-btn:hover {



background: rgba(100, 150, 255, 1);



transform: scale(1.1) translateY(-3px);



box-shadow: 0 6px 16px rgba(100, 150, 255, 0.5);



}







.theme-code-import-row {



display: flex;



gap: 8px;



margin-bottom: 16px;



}



.theme-code-input-field {



flex: 1;



background: rgba(255,255,255,0.06);



border: 1.5px solid rgba(255,255,255,0.1);



border-radius: 10px;



color: #fff;



font-size: 0.8rem;



padding: 8px 12px;



font-family: inherit;



outline: none;



transition: border-color 0.2s;



min-width: 0;



}



.theme-code-input-field:focus {



border-color: var(--accent-color);



}



.theme-code-input-field::placeholder {



color: rgba(255,255,255,0.3);



}



#import-code-modal {



z-index: 10001;



}



.import-code-modal-content {



width: 520px;



max-width: 92vw;



}



#import-code-modal .modal-header {



position: relative;



justify-content: center;



padding-bottom: 20px;



}



#import-code-modal .modal-header h3 {



text-align: center;



}



#import-code-modal .modal-header .ri-close-line {



position: absolute;



top: -4px;



right: -4px;



font-size: 2.4rem;



opacity: 0.6;



}



.import-code-body {



display: flex;



flex-direction: column;



gap: 16px;



padding: 24px;



}



.import-code-hint {



font-size: 0.85rem;



color: var(--text-dim);



margin: 0;



text-align: center;



}



.import-bar {



background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.3) 100%);



padding: 14px 22px;



border-radius: 18px;



display: flex;



align-items: center;



gap: 14px;



border: 1.5px solid var(--accent-color);



box-shadow: 0 0 18px var(--accent-glow), 0 4px 16px rgba(0,0,0,0.3);



transition: 0.3s;



}



.import-bar:focus-within {



border-color: var(--accent-color);



box-shadow: 0 0 28px var(--accent-glow), 0 6px 24px rgba(0,0,0,0.4);



background: var(--glass);



}



.import-bar > i {



color: var(--accent-color);



font-size: 1rem;



flex-shrink: 0;



}



.import-send-btn i {



color: #fff;



}



.import-bar input {



background: transparent;



border: none;



color: white;



font-size: 0.92rem;



font-weight: 500;



outline: none;



width: 100%;



font-family: 'Inter', 'Segoe UI', sans-serif;



letter-spacing: 0.3px;



}



.import-send-btn {



background: var(--accent-color);



border: none;



border-radius: 10px;



color: #fff;



cursor: pointer;



width: 32px;



height: 32px;



display: flex;



align-items: center;



justify-content: center;



flex-shrink: 0;



font-size: 1rem;



transition: opacity 0.2s, transform 0.2s;



}



.import-send-btn:hover {



opacity: 0.85;



transform: scale(1.08);



}



.themes-divider {



height: 2px;



background: linear-gradient(90deg, transparent, rgba(255,255,255,0.12), transparent);



margin: 10px 0;



box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);



}







.custom-theme-form {



    background: linear-gradient(135deg, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.02) 100%);



    padding: 30px;



    border-radius: 22px;



    border: 1px solid rgba(255, 255, 255, 0.12);



    display: flex;



    flex-direction: column;



    gap: 20px;



    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);



    position: relative;



    overflow: hidden;



}







.custom-theme-form::before {



    content: '';



    position: absolute;



    top: -100px;



    right: -100px;



    width: 300px;



    height: 300px;



    background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);



    opacity: 0.03;



    border-radius: 50%;



    pointer-events: none;



}







.theme-input {



    background: var(--card-bg);



    border: 2px solid var(--sidebar-color);



    color: #ffffff;



    padding: 13px 18px;



    border-radius: 13px;



    font-family: inherit;



    font-size: 0.95rem;



    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);



    position: relative;



    z-index: 1;



}







.theme-input::placeholder {



    color: rgba(255, 255, 255, 0.5);



}







.theme-input:focus {



    outline: none;



    border-color: var(--accent-color);



    background: var(--sidebar-color);



    box-shadow: 0 0 15px var(--glass), 0 0 20px var(--accent-glow);



    transform: translateY(-2px);



}







.color-inputs {



    display: grid;



    grid-template-columns: repeat(auto-fit, minmax(115px, 1fr));



    gap: 18px;



    position: relative;



    z-index: 1;



}







.color-group {



    display: flex;



    flex-direction: column;



    gap: 10px;



    --picker-color: var(--accent-color);



    padding: 14px;



    border-radius: 18px;



    background: linear-gradient(180deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.02) 100%);



    border: 1px solid rgba(255, 255, 255, 0.08);



    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 10px 24px rgba(0, 0, 0, 0.18);



    transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;



}







.color-group label {



    font-size: 0.7rem;



    font-weight: 800;



    text-transform: uppercase;



    color: #ffffff;



    letter-spacing: 1.2px;



}







.color-group:hover,



.color-group.picker-active,



.theme-color-label:hover,



.theme-color-label.picker-active {



    transform: translateY(-2px);



    border-color: color-mix(in srgb, var(--picker-color) 55%, rgba(255, 255, 255, 0.18));



    box-shadow: 0 0 0 1px color-mix(in srgb, var(--picker-color) 35%, transparent), 0 14px 30px rgba(0, 0, 0, 0.24), 0 0 24px color-mix(in srgb, var(--picker-color) 20%, transparent);



}







.theme-color-shell {



    position: relative;



    display: flex;



    align-items: center;



    justify-content: center;



    min-height: 72px;



    padding: 10px;



    border-radius: 16px;



    background: linear-gradient(135deg, color-mix(in srgb, var(--picker-color) 18%, rgba(255, 255, 255, 0.08)) 0%, rgba(0, 0, 0, 0.18) 100%);



    border: 1px solid rgba(255, 255, 255, 0.08);



    overflow: hidden;



    cursor: pointer;



}







.theme-color-shell::before {



    content: '';



    position: absolute;



    inset: 10px;



    border-radius: 12px;



    background: linear-gradient(135deg, color-mix(in srgb, var(--picker-color) 92%, white 8%) 0%, color-mix(in srgb, var(--picker-color) 58%, black 42%) 100%);



    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.18), 0 8px 18px color-mix(in srgb, var(--picker-color) 25%, transparent);



}







.theme-color-input-hidden {



    position: absolute !important;



    inset: 0 !important;



    width: 100% !important;



    height: 100% !important;



    opacity: 0 !important;



    pointer-events: none !important;



    appearance: none;



    -webkit-appearance: none;



}







.theme-color-input {



    width: 100%;



    height: 52px;



    border: none;



    border-radius: 14px;



    cursor: pointer;



    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);



    padding: 0;



    background: transparent;



    overflow: hidden;



    position: relative;



    z-index: 1;



    opacity: 0;



}







.theme-color-input::-webkit-color-swatch-wrapper {



    padding: 0;



    overflow: hidden;



}







.theme-color-input::-webkit-color-swatch {



    border: none;



    border-radius: 14px;



    overflow: hidden;



}







.theme-color-input::-moz-color-swatch {



    border: none;



    border-radius: 14px;



    overflow: hidden;



}







.theme-color-shell::after {



    content: '\ea13';



    font-family: 'remixicon';



    position: absolute;



    left: 16px;



    top: 50%;



    transform: translateY(-50%);



    width: 36px;



    height: 36px;



    border-radius: 50%;



    display: flex;



    align-items: center;



    justify-content: center;



    font-size: 1rem;



    color: #ffffff;



    background: rgba(10, 10, 18, 0.45);



    border: 1px solid rgba(255, 255, 255, 0.15);



    backdrop-filter: blur(10px);



    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.22);



    z-index: 2;



    pointer-events: none;



}







.theme-color-value {



    display: flex;



    align-items: center;



    justify-content: center;



    min-height: 34px;



    padding: 8px 12px;



    border-radius: 12px;



    background: rgba(0, 0, 0, 0.18);



    border: 1px solid rgba(255, 255, 255, 0.08);



    color: #ffffff;



    font-size: 0.78rem;



    font-weight: 700;



    letter-spacing: 0.08em;



    text-transform: uppercase;



    font-family: 'Rajdhani', 'Inter', sans-serif;



    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);



}







.color-group.picker-active .theme-color-shell::after {



    background: color-mix(in srgb, var(--picker-color) 32%, rgba(10, 10, 18, 0.45));



    box-shadow: 0 0 0 1px color-mix(in srgb, var(--picker-color) 28%, transparent), 0 10px 24px color-mix(in srgb, var(--picker-color) 28%, transparent);



}







.custom-color-picker-panel {



    width: min(92vw, 420px);



    background: linear-gradient(180deg, color-mix(in srgb, var(--card-bg) 88%, black 12%) 0%, color-mix(in srgb, var(--sidebar-color) 92%, black 8%) 100%);



    border: 1px solid rgba(255, 255, 255, 0.1);



    border-radius: 24px;



    padding: 22px;



    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45), 0 0 40px var(--accent-glow);



    display: flex;



    flex-direction: column;



    gap: 18px;



}







.custom-picker-header {



    display: flex;



    align-items: flex-start;



    justify-content: space-between;



    gap: 12px;



}







.custom-picker-kicker {



    display: inline-block;



    font-size: 0.72rem;



    font-weight: 800;



    color: var(--text-dim);



    text-transform: uppercase;



    letter-spacing: 0.14em;



    margin-bottom: 4px;



}







.custom-picker-header h3 {



    color: #ffffff;



    font-size: 1.15rem;



    font-weight: 800;



    margin: 0;



}







.custom-picker-close,



.custom-picker-icon-btn {



    width: 40px;



    height: 40px;



    border-radius: 14px;



    border: 1px solid rgba(255, 255, 255, 0.1);



    background: rgba(255, 255, 255, 0.06);



    color: #ffffff;



    cursor: pointer;



    display: flex;



    align-items: center;



    justify-content: center;



    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;



}







.custom-picker-close:hover,



.custom-picker-icon-btn:hover {



    transform: translateY(-1px);



    border-color: var(--accent-color);



    box-shadow: 0 0 20px var(--accent-glow);



    background: rgba(255, 255, 255, 0.1);



}







.custom-picker-body {



    display: flex;



    flex-direction: column;



    gap: 16px;



}







.custom-picker-surface {



    position: relative;



    width: 100%;



    aspect-ratio: 1.2 / 1;



    border-radius: 20px;



    overflow: hidden;



    cursor: crosshair;



    border: 1px solid rgba(255, 255, 255, 0.12);



    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 12px 24px rgba(0, 0, 0, 0.28);



}







.surface-hue,



.surface-white,



.surface-black {



    position: absolute;



    inset: 0;



    pointer-events: none;



}







.surface-white {



    background: linear-gradient(to right, #ffffff, rgba(255, 255, 255, 0));



}







.surface-black {



    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), #000000);



}







.custom-picker-surface-knob,



.custom-picker-hue-knob {



    position: absolute;



    width: 18px;



    height: 18px;



    border-radius: 50%;



    border: 3px solid #ffffff;



    box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.35);



    transform: translate(-50%, -50%);



    pointer-events: none;



}







.custom-picker-row.compact {



    display: grid;



    grid-template-columns: 40px 44px 1fr;



    gap: 12px;



    align-items: center;



}







.custom-picker-preview {



    width: 44px;



    height: 44px;



    border-radius: 50%;



    border: 2px solid rgba(255, 255, 255, 0.16);



    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.16), 0 10px 20px rgba(0, 0, 0, 0.22);



}







.custom-picker-hue {



    position: relative;



    height: 16px;



    border-radius: 999px;



    background: linear-gradient(90deg, #ff0000 0%, #ffff00 16%, #00ff00 33%, #00ffff 50%, #0000ff 66%, #ff00ff 83%, #ff0000 100%);



    border: 1px solid rgba(255, 255, 255, 0.14);



    box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.15);



    cursor: ew-resize;



}







.custom-picker-row.values {



    display: grid;



    grid-template-columns: 1.4fr 1fr 1fr 1fr;



    gap: 12px;



}







.custom-picker-field {



    display: flex;



    flex-direction: column;



    gap: 6px;



}







.custom-picker-field span {



    font-size: 0.72rem;



    font-weight: 800;



    color: var(--text-dim);



    text-transform: uppercase;



    letter-spacing: 0.12em;



}







.custom-picker-field input {



    width: 100%;



    height: 46px;



    border-radius: 14px;



    border: 1px solid rgba(255, 255, 255, 0.12);



    background: rgba(255, 255, 255, 0.06);



    color: #ffffff;



    padding: 0 14px;



    font-size: 0.95rem;



    font-weight: 700;



    outline: none;



    transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;



}







.custom-picker-field input:focus {



    border-color: var(--accent-color);



    background: rgba(255, 255, 255, 0.1);



    box-shadow: 0 0 0 3px var(--glass), 0 0 18px var(--accent-glow);



}







.theme-action-btn {



    background: rgba(255, 255, 255, 0.05);



    border: 1px solid rgba(255, 255, 255, 0.12);



    color: #ffffff;



    padding: 6px 12px;



    border-radius: 8px;



    font-size: 0.8rem;



    font-weight: 600;



    cursor: pointer;



    display: flex;



    align-items: center;



    gap: 6px;



    transition: all 0.3s ease;



}







.theme-action-btn:hover {



    background: rgba(255, 255, 255, 0.1);



    color: #ffffff;



    border-color: var(--accent-color);



    box-shadow: 0 0 10px var(--glass);



    transform: translateY(-1px);



}







.theme-action-btn i {



    font-size: 1.1rem;



}







.create-btn {



    background: linear-gradient(135deg, var(--accent-color) 0%, brightness(1.3) 100%);



    color: white;



    border: none;



    padding: 15px 26px;



    border-radius: 13px;



    font-weight: 700;



    font-size: 0.95rem;



    cursor: pointer;



    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);



    display: flex;



    align-items: center;



    justify-content: center;



    gap: 10px;



    text-transform: uppercase;



    letter-spacing: 0.6px;



    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);



    position: relative;



    z-index: 1;



}







.create-btn:hover {



    filter: brightness(1.15);



    transform: translateY(-3px);



    box-shadow: 0 10px 30px var(--accent-glow), 0 0 20px rgba(0, 0, 0, 0.3);



}







.create-btn:active {



    transform: translateY(-1px);



}







/* Custom Scrollbar */



::-webkit-scrollbar { width: 8px; }



::-webkit-scrollbar-track { background: transparent; }



::-webkit-scrollbar-thumb { background: var(--glass); border-radius: 10px; }

::-webkit-scrollbar-thumb:hover { background: var(--accent-color); }

 

 

/* ── Tablet (≤ 900px) ───────────────────────────────────────────────────── */

@media (max-width: 900px) {

    .grid {

        grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));

        gap: 20px;

    }

 

    .connection-boxes .connection-box {

        width: 240px;

    }

}

 

/* ── Tablet portrait / large phone (≤ 768px) ────────────────────────────── */

@media (max-width: 768px) {

 

    /* Topbar: logo + theme-btn on row 1, search on row 2, boxes on row 3 */

    .topbar {

        flex-wrap: wrap;

        padding: 12px 16px;

        gap: 10px;

    }

 

    .logo i {

        font-size: 2.2rem;

        margin-right: 0;

    }

 

    .search-bar-wrap {

        order: 3;

        flex: 1 1 100%;

        max-width: 100%;

    }

 

    .search-bar-wrap .search-bar {

        max-width: 100%;

        width: 100%;

        box-sizing: border-box;

    }

 

    .theme-studio-btn span {

        display: none;

    }

 

    .theme-studio-btn {

        padding: 9px 11px;

        min-width: 0;

    }

 

    .topbar > .theme-studio-btn:first-of-type {

        margin-left: auto;

    }

 

    .connection-boxes {

        order: 4;

        flex: 1 1 100%;

        margin-left: 0;

        gap: 8px;

    }

 

    .connection-boxes .connection-box {

        flex: 1;

        width: auto;

        min-width: 0;

    }

 

    /* Content padding */

    .content {

        padding: 16px;

    }

 

    /* Filter bar: horizontally scrollable so all filters stay on one row */

    .filter-bar {

        flex-wrap: nowrap;

        overflow-x: auto;

        -webkit-overflow-scrolling: touch;

        scrollbar-width: none;

        gap: 12px;

        padding: 14px 16px;

        margin-bottom: 20px;

        border-radius: 14px;

        position: static; /* avoid sticky on mobile causing layout issues */

    }

 

    .filter-bar::-webkit-scrollbar { display: none; }

 

    .filter-group {

        flex-shrink: 0;

    }

 

    .filter-pagination {

        margin-left: auto;

        flex-shrink: 0;

    }

 

    /* Grid: 2 columns */

    .grid {

        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));

        gap: 16px;

    }

 

    /* Modals */

    .themes-modal-content {

        width: 95vw;

        max-height: 92vh;

        border-radius: 20px;

    }

 

    .themes-modal-content header {

        padding: 20px 20px 14px;

    }

 

    .themes-container.modal-scrollable .themes-section {

        padding: 18px;

    }

 

    .pkg-link-item {

        flex-direction: column;

        align-items: stretch;

        gap: 10px;

        text-align: center;

    }

 

    .themed-grid {

        grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));

    }

 

    .color-inputs {

        grid-template-columns: repeat(2, 1fr);

    }

 

    /* PS4 modal */

    .ps4-modal-content {

        width: 95vw;

    }

 

    /* Game detail modal */

    .game-detail-compact {

        flex-direction: column;

    }

 

    .compact-art {

        width: 100%;

        height: 220px;

    }

}

 

/* ── Phone (≤ 480px) ────────────────────────────────────────────────────── */

@media (max-width: 480px) {

 

    .topbar {

        padding: 10px 12px;

        gap: 8px;

    }

 

    .logo i {

        font-size: 1.8rem;

    }

 

    /* Hide theme button label on tiny screens */

    .theme-studio-btn span {

        display: none;

    }

 

    .theme-studio-btn {

        padding: 8px 10px;

        min-width: 0;

    }

 

    /* Connection boxes stack vertically */

    .connection-boxes {

        flex-direction: column;

        gap: 8px;

    }

 

    .connection-boxes .connection-box {

        width: 100%;

        padding: 12px 16px;

    }

 

    /* Single-column grid */

    .grid {

        grid-template-columns: 1fr;

        gap: 14px;

    }

 

    .content {

        padding: 12px;

    }

 

    /* Filter bar: tighter on small phones */

    .filter-bar {

        padding: 10px 12px;

        gap: 10px;

    }

 

    .filter-label {

        font-size: 0.65rem;

    }

 

    .filter-pill {

        font-size: 0.72rem;

        padding: 5px 10px;

    }

 

    .filter-select {

        font-size: 0.78rem;

    }

 

    /* Modals: full width, centred */

    .themes-modal-content,

    .ps4-modal-content {

        width: 96vw;

        max-height: 90dvh;

        border-radius: 18px;

    }

 

    /* Page indicator text */

    #page-indicator {

        font-size: 0.78rem;

    }

 

    /* Game cards */

    .game-card-info {

        padding: 12px;

    }

}



/* ── Toast Notifications ───────────────────────────────────────────────── */

#toast-container {

    position: fixed;

    top: 24px;

    left: 24px;

    display: flex;

    flex-direction: column;

    gap: 10px;

    z-index: 99999;

    pointer-events: none;

}



.toast {

    display: flex;

    align-items: center;

    gap: 0;

    background: rgba(18, 18, 28, 0.92);

    border: 1px solid rgba(255,255,255,0.1);

    border-left: none;

    color: #fff;

    border-radius: 12px;

    font-size: 0.86rem;

    font-weight: 600;

    box-shadow: 0 8px 40px rgba(0,0,0,0.6);

    backdrop-filter: blur(18px);

    -webkit-backdrop-filter: blur(18px);

    opacity: 0;

    transform: translateX(-24px);

    transition: opacity 0.3s cubic-bezier(0.22,1,0.36,1), transform 0.35s cubic-bezier(0.22,1,0.36,1);

    max-width: 320px;

    min-width: 220px;

    pointer-events: auto;

    overflow: hidden;

}



.toast.show {

    opacity: 1;

    transform: translateX(0);

}



.toast-bar {

    width: 4px;

    align-self: stretch;

    flex-shrink: 0;

    border-radius: 12px 0 0 12px;

}



.toast-icon {

    width: 36px;

    height: 36px;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 1rem;

    flex-shrink: 0;

    margin-left: 10px;

    border-radius: 8px;

}



.toast-text {

    flex: 1;

    padding: 12px 14px 12px 8px;

    line-height: 1.3;

}



.toast-title {

    font-size: 0.83rem;

    font-weight: 700;

    color: #fff;

}



.toast-sub {

    font-size: 0.73rem;

    font-weight: 400;

    color: rgba(255,255,255,0.55);

    margin-top: 2px;

}



.toast-success .toast-bar     { background: var(--accent-color); }

.toast-success .toast-icon     { color: var(--accent-color); background: color-mix(in srgb, var(--accent-color) 15%, transparent); }



.toast-error .toast-bar       { background: #ff4d6d; }

.toast-error .toast-icon       { color: #ff4d6d; background: rgba(255,77,109,0.15); }



.toast-info .toast-bar        { background: rgba(255,255,255,0.35); }

.toast-info .toast-icon        { color: rgba(255,255,255,0.7); background: rgba(255,255,255,0.07); }



.toast-warning .toast-bar     { background: #f5a623; }

.toast-warning .toast-icon     { color: #f5a623; background: rgba(245,166,35,0.15); }



/* ── Scroll-to-top button ──────────────────────────────────────────────── */

#scroll-top-btn {

    position: fixed;

    bottom: 28px;

    left: 24px;

    width: 44px;

    height: 44px;

    border-radius: 50%;

    background: var(--card-bg);

    border: 1px solid rgba(255,255,255,0.15);

    color: var(--accent-color);

    font-size: 1.2rem;

    cursor: pointer;

    display: flex;

    align-items: center;

    justify-content: center;

    z-index: 9999;

    opacity: 0;

    transform: translateY(10px);

    transition: opacity 0.3s ease, transform 0.3s ease, box-shadow 0.2s ease;

    pointer-events: none;

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

}



#scroll-top-btn.visible {

    opacity: 1;

    transform: translateY(0);

    pointer-events: auto;

}



#scroll-top-btn:hover {

    box-shadow: 0 0 18px var(--accent-glow);

}



/* ── Recently Viewed ───────────────────────────────────────────────────── */

#recently-viewed-section {

    padding: 8px 0 4px;

}



.rv-header {

    font-size: 0.78rem;

    font-weight: 700;

    color: var(--text-dim);

    text-transform: uppercase;

    letter-spacing: 0.1em;

    padding: 0 4px 10px;

    display: flex;

    align-items: center;

    gap: 6px;

}



.rv-row {

    display: flex;

    gap: 12px;

    overflow-x: auto;

    padding-bottom: 10px;

    scrollbar-width: thin;

}



.rv-row::-webkit-scrollbar { height: 4px; }

.rv-row::-webkit-scrollbar-track { background: transparent; }

.rv-row::-webkit-scrollbar-thumb { background: var(--accent-color); border-radius: 4px; }



.rv-card {

    display: flex;

    align-items: center;

    gap: 10px;

    background: var(--card-bg);

    border: 1px solid rgba(255,255,255,0.08);

    border-radius: 12px;

    padding: 8px 14px 8px 8px;

    cursor: pointer;

    min-width: 200px;

    flex-shrink: 0;

    transition: border-color 0.2s, box-shadow 0.2s, transform 0.15s;

}



.rv-card:hover {

    border-color: var(--accent-color);

    box-shadow: 0 0 14px var(--accent-glow);

    transform: translateY(-2px);

}



.rv-card img {

    width: 48px;

    height: 48px;

    object-fit: cover;

    border-radius: 8px;

    flex-shrink: 0;

}



.rv-info {

    display: flex;

    flex-direction: column;

    gap: 3px;

    overflow: hidden;

}



.rv-name {

    font-size: 0.82rem;

    font-weight: 700;

    color: #fff;

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    max-width: 130px;

}



.rv-meta {

    font-size: 0.72rem;

    color: var(--text-dim);

}



/* ── Card Action Buttons (fav / installed) ────────────────────────────── */

.card-art {

    position: relative;

}



.card-action-btns {

    position: absolute;

    top: 8px;

    right: 8px;

    display: flex;

    flex-direction: column;

    gap: 6px;

    z-index: 10;

    opacity: 0;

    transition: opacity 0.2s ease;

}



.game-card:hover .card-action-btns {

    opacity: 1;

}



.card-action-btn {

    width: 32px;

    height: 32px;

    border-radius: 50%;

    border: 1px solid rgba(255,255,255,0.2);

    background: rgba(0,0,0,0.65);

    color: #fff;

    font-size: 0.95rem;

    display: flex;

    align-items: center;

    justify-content: center;

    cursor: pointer;

    transition: background 0.2s, border-color 0.2s, box-shadow 0.2s, transform 0.15s;

    backdrop-filter: blur(4px);

}



.card-action-btn:hover {

    transform: scale(1.15);

}



.fav-btn.active {

    color: #fff;

    border-color: #ff4d6d;

    background: rgba(255,77,109,0.75);

    box-shadow: 0 0 10px rgba(255,77,109,0.5);

}



.inst-btn.active {

    color: #fff;

    border-color: #00ff88;

    background: rgba(0,255,136,0.75);

    box-shadow: 0 0 10px rgba(0,255,136,0.4);

}



/* ── Installed Badge ───────────────────────────────────────────────────── */

.installed-badge {

    position: absolute;

    bottom: 8px;

    left: 8px;

    background: rgba(0,255,136,0.18);

    border: 1px solid #00ff88;

    color: #00ff88;

    font-size: 0.7rem;

    font-weight: 700;

    padding: 3px 8px;

    border-radius: 20px;

    display: flex;

    align-items: center;

    gap: 4px;

    z-index: 10;

    text-transform: uppercase;

    letter-spacing: 0.05em;

}



/* ── Card tilt smooth transition ───────────────────────────────────────── */

.game-card {

    will-change: transform;

    transition: transform 0.15s ease;

    transform-style: flat;

}



.game-card .card-art {

    border-radius: 18px 18px 0 0;

    -webkit-mask-image: -webkit-radial-gradient(white, black);

    mask-image: radial-gradient(white, black);

}



/* ── Manual IP Entry in PS4 modal ──────────────────────────────────────── */

.ps4-manual-ip {

    display: flex;

    align-items: center;

    gap: 8px;

    margin-top: 12px;

    padding: 10px 14px;

    background: rgba(255,255,255,0.04);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 12px;

}



.ps4-manual-ip i {

    color: var(--text-dim);

    font-size: 1rem;

    flex-shrink: 0;

}



#ps4-manual-input {

    flex: 1;

    background: transparent;

    border: none;

    outline: none;

    color: #fff;

    font-size: 0.88rem;

    font-family: inherit;

}



#ps4-manual-input::placeholder {

    color: var(--text-dim);

}



.ps4-manual-ip button {

    background: var(--accent-color);

    border: none;

    border-radius: 8px;

    width: 30px;

    height: 30px;

    color: #000;

    font-size: 1rem;

    display: flex;

    align-items: center;

    justify-content: center;

    cursor: pointer;

    flex-shrink: 0;

    transition: box-shadow 0.2s;

}



.ps4-manual-ip button:hover {

    box-shadow: 0 0 12px var(--accent-glow);

}



/* ── PS4 Installs Progress Panel ───────────────────────────────────────── */

#installs-panel {

    position: fixed;

    bottom: 84px;

    right: 24px;

    width: 320px;

    background: var(--card-bg);

    border: 1px solid rgba(255,255,255,0.12);

    border-radius: 16px;

    box-shadow: 0 12px 48px rgba(0,0,0,0.55);

    z-index: 9998;

    overflow: hidden;

    transition: opacity 0.3s ease, transform 0.3s ease;

    display: none;

}



#installs-panel.visible {

    display: block;

}



#installs-panel.minimised #installs-body {

    display: none;

}



.installs-header {

    display: flex;

    align-items: center;

    gap: 8px;

    padding: 12px 16px;

    background: rgba(255,255,255,0.04);

    border-bottom: 1px solid rgba(255,255,255,0.07);

    cursor: pointer;

    user-select: none;

}



.installs-header i.ri-download-cloud-2-line {

    color: var(--accent-color);

    font-size: 1rem;

}



.installs-header-title {

    flex: 1;

    font-size: 0.82rem;

    font-weight: 700;

    color: #fff;

    text-transform: uppercase;

    letter-spacing: 0.08em;

}



.installs-header-count {

    font-size: 0.72rem;

    color: var(--text-dim);

    margin-right: 8px;

}



.installs-minimise-btn {

    background: none;

    border: none;

    color: var(--text-dim);

    cursor: pointer;

    font-size: 1rem;

    display: flex;

    align-items: center;

    padding: 0;

    transition: color 0.2s;

}



.installs-minimise-btn:hover {

    color: #fff;

}



#installs-body {

    padding: 10px;

    display: flex;

    flex-direction: column;

    gap: 8px;

    max-height: 320px;

    overflow-y: auto;

    scrollbar-width: thin;

}



.install-task {

    background: rgba(255,255,255,0.04);

    border: 1px solid rgba(255,255,255,0.07);

    border-radius: 10px;

    padding: 10px 12px;

}



.install-task.done {

    border-color: rgba(0,255,136,0.3);

}



.install-task-title {

    font-size: 0.8rem;

    font-weight: 700;

    color: #fff;

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    margin-bottom: 6px;

}



.install-task-meta {

    display: flex;

    justify-content: space-between;

    font-size: 0.7rem;

    color: var(--text-dim);

    margin-bottom: 6px;

}



.install-task-status {

    font-size: 0.7rem;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: 0.06em;

}



.status-running  { color: var(--accent-color); }

.status-complete { color: #00ff88; }

.status-error    { color: #ff4d6d; }

.status-unknown  { color: var(--text-dim); }



.install-progress-track {

    width: 100%;

    height: 5px;

    background: rgba(255,255,255,0.1);

    border-radius: 4px;

    overflow: hidden;

    margin-top: 4px;

}



.install-progress-bar {

    height: 100%;

    border-radius: 4px;

    background: var(--accent-color);

    box-shadow: 0 0 8px var(--accent-glow);

    transition: width 0.6s ease;

}



.install-task.done .install-progress-bar {

    background: #00ff88;

    box-shadow: 0 0 8px rgba(0,255,136,0.5);

}



.installs-empty {

    text-align: center;

    font-size: 0.78rem;

    color: var(--text-dim);

    padding: 14px 0;

}



/* ── Onboarding Modal ──────────────────────────────────────────────────── */

.onboarding-overlay {

    display: none;

    position: fixed;

    inset: 0;

    background: rgba(0,0,0,0.75);

    backdrop-filter: blur(12px);

    -webkit-backdrop-filter: blur(12px);

    z-index: 999999;

    align-items: center;

    justify-content: center;

    animation: obFadeIn 0.4s ease forwards;

}



.onboarding-overlay.ob-exit {

    animation: obFadeOut 0.45s ease forwards;

}



@keyframes obFadeIn  { from { opacity: 0; } to { opacity: 1; } }

@keyframes obFadeOut { from { opacity: 1; } to { opacity: 0; } }



.onboarding-modal {

    width: 480px;

    max-width: 94vw;

    background: var(--card-bg);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 24px;

    box-shadow: 0 32px 80px rgba(0,0,0,0.7);

    overflow: hidden;

    animation: obSlideUp 0.45s cubic-bezier(0.22,1,0.36,1) forwards;

}



@keyframes obSlideUp {

    from { opacity: 0; transform: translateY(32px) scale(0.97); }

    to   { opacity: 1; transform: translateY(0)    scale(1); }

}



.ob-step {

    display: none;

    padding: 36px 36px 0;

    animation: obStepIn 0.3s ease forwards;

}



.ob-step.active {

    display: block;

}



@keyframes obStepIn {

    from { opacity: 0; transform: translateX(16px); }

    to   { opacity: 1; transform: translateX(0); }

}



.ob-icon-wrap {

    width: 64px;

    height: 64px;

    border-radius: 18px;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 1.9rem;

    margin-bottom: 20px;

}



.ob-accent { background: color-mix(in srgb, var(--accent-color) 18%, transparent); color: var(--accent-color); }

.ob-blue   { background: rgba(56,139,253,0.15);  color: #388bfd; }

.ob-green  { background: rgba(0,255,136,0.12);   color: #00e676; }

.ob-orange { background: rgba(245,166,35,0.14);  color: #f5a623; }



.ob-title {

    font-size: 1.35rem;

    font-weight: 800;

    color: #fff;

    margin: 0 0 10px;

    line-height: 1.2;

    display: flex;

    align-items: center;

    gap: 10px;

    flex-wrap: wrap;

}



.ob-optional {

    font-size: 0.65rem;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: 0.08em;

    background: rgba(255,255,255,0.08);

    color: var(--text-dim);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 20px;

    padding: 3px 9px;

    vertical-align: middle;

}



.ob-desc {

    font-size: 0.9rem;

    color: rgba(255,255,255,0.65);

    line-height: 1.65;

    margin: 0 0 20px;

}



.ob-desc strong { color: #fff; }



.ob-features {

    list-style: none;

    padding: 0;

    margin: 0 0 8px;

    display: flex;

    flex-direction: column;

    gap: 10px;

}



.ob-features li {

    display: flex;

    align-items: center;

    gap: 10px;

    font-size: 0.87rem;

    color: rgba(255,255,255,0.8);

}



.ob-features li i {

    color: var(--accent-color);

    font-size: 1rem;

    width: 20px;

    text-align: center;

    flex-shrink: 0;

}



.ob-steps-list {

    list-style: none;

    padding: 0;

    margin: 0 0 8px;

    display: flex;

    flex-direction: column;

    gap: 12px;

}



.ob-steps-list li {

    display: flex;

    align-items: flex-start;

    gap: 12px;

    font-size: 0.87rem;

    color: rgba(255,255,255,0.75);

    line-height: 1.5;

}



.ob-steps-list li strong { color: #fff; }

.ob-steps-list li em     { color: rgba(255,255,255,0.5); font-style: normal; }



.ob-step-num {

    width: 24px;

    height: 24px;

    border-radius: 50%;

    background: color-mix(in srgb, var(--accent-color) 20%, transparent);

    border: 1px solid color-mix(in srgb, var(--accent-color) 50%, transparent);

    color: var(--accent-color);

    font-size: 0.72rem;

    font-weight: 800;

    display: flex;

    align-items: center;

    justify-content: center;

    flex-shrink: 0;

    margin-top: 1px;

}



.ob-tip {

    display: block;

    background: rgba(255,255,255,0.05);

    border: 1px solid rgba(255,255,255,0.08);

    border-radius: 10px;

    padding: 10px 14px;

    font-size: 0.8rem;

    color: rgba(255,255,255,0.55);

    line-height: 1.5;

    margin-top: 16px;

    margin-bottom: 8px;

}



.ob-tip strong { color: rgba(255,255,255,0.8); }



.ob-tip i {

    display: inline;

    font-size: 0.95rem;

    margin-right: 6px;

    color: rgba(255,255,255,0.4);

}



.ob-tip-success {

    background: rgba(0,255,136,0.07);

    border-color: rgba(0,255,136,0.2);

    color: rgba(0,255,136,0.85);

}



.ob-tip-success i { color: #00e676; }

.ob-tip-success strong { color: #00ff88; }



.ob-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: 20px 36px 28px;

    margin-top: 24px;

    border-top: 1px solid rgba(255,255,255,0.06);

}



.ob-dots {

    display: flex;

    gap: 7px;

    align-items: center;

}



.ob-dot {

    width: 8px;

    height: 8px;

    border-radius: 50%;

    background: rgba(255,255,255,0.18);

    border: none;

    cursor: pointer;

    padding: 0;

    transition: background 0.2s, transform 0.2s, width 0.25s;

}



.ob-dot.active {

    background: var(--accent-color);

    width: 22px;

    border-radius: 4px;

    box-shadow: 0 0 8px var(--accent-glow);

}



.ob-nav {

    display: flex;

    align-items: center;

    gap: 8px;

}



.ob-btn {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    padding: 9px 18px;

    border-radius: 10px;

    font-size: 0.85rem;

    font-weight: 700;

    cursor: pointer;

    border: none;

    transition: background 0.2s, box-shadow 0.2s, opacity 0.2s;

    font-family: inherit;

}



.ob-btn-ghost {

    background: rgba(255,255,255,0.07);

    color: rgba(255,255,255,0.55);

    border: 1px solid rgba(255,255,255,0.1);

}



.ob-btn-ghost:hover {

    background: rgba(255,255,255,0.12);

    color: #fff;

}



.ob-btn-primary {

    background: var(--accent-color);

    color: #000;

    box-shadow: 0 4px 18px var(--accent-glow);

}



.ob-btn-primary:hover {

    box-shadow: 0 6px 24px var(--accent-glow);

    filter: brightness(1.08);

}



.ob-btn-finish {

    background: #00e676;

    box-shadow: 0 4px 18px rgba(0,230,118,0.45);

}



.ob-btn-finish:hover {

    box-shadow: 0 6px 28px rgba(0,230,118,0.6);

}



@media (max-width: 540px) {

    .ob-step { padding: 28px 24px 0; }

    .ob-footer { padding: 16px 24px 22px; }

    .ob-title { font-size: 1.15rem; }

    .ob-icon-wrap { width: 52px; height: 52px; font-size: 1.5rem; border-radius: 14px; }

}



/* ── FAQ Modal ─────────────────────────────────────────────────────────── */

.faq-topbar-btn {

    border-color: rgba(255,255,255,0.1);

}



.faq-modal-content {

    width: 560px;

    max-width: 96vw;

}



.faq-body {

    padding: 0 !important;

}



.faq-group {

    padding: 20px 24px 4px;

    border-bottom: 1px solid rgba(255,255,255,0.06);

}



.faq-group:last-child {

    border-bottom: none;

    padding-bottom: 20px;

}



.faq-group-title {

    font-size: 0.72rem;

    font-weight: 800;

    text-transform: uppercase;

    letter-spacing: 0.1em;

    color: var(--accent-color);

    margin: 0 0 12px;

    display: flex;

    align-items: center;

    gap: 7px;

}



.faq-group-title i {

    font-size: 0.9rem;

}



.faq-item {

    border: 1px solid rgba(255,255,255,0.07);

    border-radius: 10px;

    margin-bottom: 6px;

    overflow: hidden;

    transition: border-color 0.2s;

}



.faq-item.open {

    border-color: color-mix(in srgb, var(--accent-color) 40%, transparent);

}



.faq-q {

    width: 100%;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    background: rgba(255,255,255,0.03);

    border: none;

    color: #fff;

    font-size: 0.88rem;

    font-weight: 600;

    font-family: inherit;

    padding: 13px 16px;

    text-align: left;

    cursor: pointer;

    transition: background 0.2s;

}



.faq-q:hover {

    background: rgba(255,255,255,0.06);

}



.faq-item.open .faq-q {

    color: var(--accent-color);

    background: color-mix(in srgb, var(--accent-color) 6%, transparent);

}



.faq-q i {

    font-size: 1rem;

    flex-shrink: 0;

    color: var(--text-dim);

    transition: transform 0.25s, color 0.2s;

}



.faq-item.open .faq-q i {

    color: var(--accent-color);

}



.faq-a {

    display: none;

    padding: 0 16px 14px;

    font-size: 0.84rem;

    color: rgba(255,255,255,0.6);

    line-height: 1.65;

    border-top: 1px solid rgba(255,255,255,0.05);

    padding-top: 12px;

}



.faq-item.open .faq-a {

    display: block;

}



.faq-a strong {

    color: rgba(255,255,255,0.9);

}



/* ── Version Badge ──────────────────────────────────────────────────────── */

.version-badge {

    font-size: 0.62rem;

    font-weight: 800;

    letter-spacing: 0.05em;

    color: rgba(255,255,255,0.35);

    background: rgba(255,255,255,0.06);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 20px;

    padding: 2px 7px;

    margin-left: 6px;

    cursor: pointer;

    transition: color 0.2s, background 0.2s;

    vertical-align: middle;

    white-space: nowrap;

}

.version-badge:hover {

    color: var(--accent-color);

    background: color-mix(in srgb, var(--accent-color) 12%, transparent);

    border-color: color-mix(in srgb, var(--accent-color) 40%, transparent);

}

.version-badge-new {

    color: var(--accent-color);

    background: color-mix(in srgb, var(--accent-color) 12%, transparent);

    border-color: color-mix(in srgb, var(--accent-color) 50%, transparent);

    animation: vbPulse 2s ease infinite;

}

@keyframes vbPulse {

    0%, 100% { box-shadow: 0 0 0 0 var(--accent-glow); }

    50%       { box-shadow: 0 0 0 4px transparent; }

}



/* ── Changelog Modal ────────────────────────────────────────────────────── */

.changelog-body {

    padding: 0 !important;

}

.cl-entry {

    padding: 20px 24px;

    border-bottom: 1px solid rgba(255,255,255,0.06);

}

.cl-entry:last-child { border-bottom: none; }

.cl-entry.cl-latest { background: color-mix(in srgb, var(--accent-color) 4%, transparent); }

.cl-entry-header {

    display: flex;

    align-items: center;

    gap: 8px;

    margin-bottom: 6px;

}

.cl-version {

    font-size: 0.75rem;

    font-weight: 800;

    color: var(--accent-color);

    background: color-mix(in srgb, var(--accent-color) 12%, transparent);

    border: 1px solid color-mix(in srgb, var(--accent-color) 30%, transparent);

    border-radius: 20px;

    padding: 2px 9px;

}

.cl-new-badge {

    font-size: 0.62rem;

    font-weight: 800;

    text-transform: uppercase;

    letter-spacing: 0.1em;

    color: #00e676;

    background: rgba(0,230,118,0.1);

    border: 1px solid rgba(0,230,118,0.25);

    border-radius: 20px;

    padding: 2px 8px;

}

.cl-date {

    font-size: 0.72rem;

    color: rgba(255,255,255,0.3);

    margin-left: auto;

}

.cl-title {

    font-size: 0.9rem;

    font-weight: 700;

    color: #fff;

    margin: 0 0 10px;

}

.cl-items {

    list-style: none;

    padding: 0;

    margin: 0;

    display: flex;

    flex-direction: column;

    gap: 6px;

}

.cl-item {

    display: flex;

    align-items: flex-start;

    gap: 8px;

    font-size: 0.82rem;

    color: rgba(255,255,255,0.6);

    line-height: 1.5;

}

.cl-item i { font-size: 0.9rem; flex-shrink: 0; margin-top: 2px; }

.cl-item.cl-new i  { color: var(--accent-color); }

.cl-item.cl-fix i  { color: #f5a623; }

.cl-item.cl-impr i { color: #4fc3f7; }



/* ── Modal Header Left (shared) ─────────────────────────────────────────── */

.modal-header-left {

    display: flex;

    align-items: center;

    gap: 10px;

}

.modal-header-left h2 {

    font-size: 1rem;

    font-weight: 700;

    color: #fff;

    margin: 0;

}



/* ── Search Bar Wrap & History Dropdown ─────────────────────────────────── */

.search-bar-wrap {

    flex: 0 1 380px;

    position: relative;

    min-width: 0;

}

.search-bar-wrap .search-bar {

    width: 100%;

}

.search-history-drop {

    position: absolute;

    top: calc(100% + 6px);

    left: 0;

    right: 0;

    background: rgba(18,18,28,0.97);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 12px;

    box-shadow: 0 8px 32px rgba(0,0,0,0.6);

    backdrop-filter: blur(20px);

    z-index: 9999;

    overflow: hidden;

}

.sh-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: 8px 14px 6px;

    font-size: 0.7rem;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: 0.08em;

    color: rgba(255,255,255,0.3);

    border-bottom: 1px solid rgba(255,255,255,0.06);

}

.sh-header button {

    background: none;

    border: none;

    color: rgba(255,255,255,0.3);

    font-size: 0.72rem;

    cursor: pointer;

    padding: 2px 6px;

    border-radius: 6px;

    transition: color 0.15s, background 0.15s;

    font-family: inherit;

}

.sh-header button:hover { color: #fff; background: rgba(255,255,255,0.08); }

.sh-item {

    width: 100%;

    display: flex;

    align-items: center;

    gap: 10px;

    padding: 9px 14px;

    background: none;

    border: none;

    color: rgba(255,255,255,0.75);

    font-size: 0.85rem;

    font-family: inherit;

    text-align: left;

    cursor: pointer;

    transition: background 0.15s;

}

.sh-item:hover { background: rgba(255,255,255,0.05); }

.sh-item > i:first-child { color: rgba(255,255,255,0.25); font-size: 0.85rem; }

.sh-item span { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sh-use-icon { font-size: 0.8rem; color: rgba(255,255,255,0.2); margin-left: auto; }

.sh-item:hover .sh-use-icon { color: var(--accent-color); }



/* ── Download Queue Panel ───────────────────────────────────────────────── */

#queue-panel {

    position: fixed;

    bottom: 24px;

    right: 290px;

    width: 280px;

    background: rgba(14,14,22,0.96);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 14px;

    box-shadow: 0 8px 40px rgba(0,0,0,0.6);

    backdrop-filter: blur(20px);

    z-index: 8000;

    overflow: hidden;

    display: none;

}

#queue-panel.visible { display: block; }

#queue-panel.minimised #queue-body,

#queue-panel.minimised #queue-footer { display: none !important; }



.queue-header {

    display: flex;

    align-items: center;

    gap: 8px;

    padding: 10px 14px;

    background: rgba(255,255,255,0.04);

    border-bottom: 1px solid rgba(255,255,255,0.07);

    cursor: pointer;

    user-select: none;

}

.queue-header i { color: var(--accent-color); font-size: 1rem; }

.queue-header-title { font-size: 0.82rem; font-weight: 700; color: #fff; flex: 1; }

.queue-header-count {

    font-size: 0.7rem;

    font-weight: 700;

    color: rgba(255,255,255,0.4);

    background: rgba(255,255,255,0.07);

    border-radius: 20px;

    padding: 1px 7px;

}



#queue-body {

    max-height: 180px;

    overflow-y: auto;

}

#queue-body::-webkit-scrollbar { width: 4px; }

#queue-body::-webkit-scrollbar-track { background: transparent; }

#queue-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.12); border-radius: 4px; }



.queue-item {

    display: flex;

    align-items: center;

    gap: 8px;

    padding: 8px 14px;

    border-bottom: 1px solid rgba(255,255,255,0.04);

    font-size: 0.78rem;

}

.queue-item:last-child { border-bottom: none; }

.queue-item-icon { color: rgba(255,255,255,0.2); font-size: 0.85rem; flex-shrink: 0; }

.queue-item-title {

    flex: 1;

    color: rgba(255,255,255,0.7);

    overflow: hidden;

    text-overflow: ellipsis;

    white-space: nowrap;

}

.queue-item-remove {

    background: none;

    border: none;

    color: rgba(255,255,255,0.25);

    cursor: pointer;

    padding: 2px;

    border-radius: 4px;

    line-height: 1;

    transition: color 0.15s;

    flex-shrink: 0;

}

.queue-item-remove:hover { color: #ff4d6d; }



#queue-footer {

    display: flex;

    gap: 6px;

    padding: 10px 12px;

    border-top: 1px solid rgba(255,255,255,0.07);

}

.queue-action-btn {

    flex: 1;

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 5px;

    padding: 7px 10px;

    border: none;

    border-radius: 8px;

    font-size: 0.75rem;

    font-weight: 700;

    font-family: inherit;

    cursor: pointer;

    transition: filter 0.15s, opacity 0.15s;

}

.queue-send-btn {

    background: var(--accent-color);

    color: #000;

}

.queue-send-btn:hover { filter: brightness(1.1); }

.queue-clear-btn {

    background: rgba(255,255,255,0.07);

    color: rgba(255,255,255,0.5);

    border: 1px solid rgba(255,255,255,0.1);

}

.queue-clear-btn:hover { background: rgba(255,77,109,0.15); color: #ff4d6d; border-color: rgba(255,77,109,0.3); }



/* ── Queue button in link items ─────────────────────────────────────────── */

.pkg-link-actions {

    display: flex;

    align-items: center;

    gap: 6px;

    flex-shrink: 0;

}

.queue-btn {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    width: 32px;

    height: 32px;

    border-radius: 8px;

    border: 1px solid rgba(255,255,255,0.12);

    background: rgba(255,255,255,0.05);

    color: rgba(255,255,255,0.5);

    cursor: pointer;

    font-size: 0.9rem;

    transition: background 0.15s, color 0.15s, border-color 0.15s;

    flex-shrink: 0;

}

.queue-btn:hover {

    background: color-mix(in srgb, var(--accent-color) 15%, transparent);

    color: var(--accent-color);

    border-color: color-mix(in srgb, var(--accent-color) 40%, transparent);

}



/* ── PWA Install Banner ─────────────────────────────────────────────────── */

#pwa-banner {

    position: fixed;

    bottom: 24px;

    left: 50%;

    transform: translateX(-50%);

    display: flex;

    align-items: center;

    gap: 10px;

    background: rgba(14,14,22,0.97);

    border: 1px solid rgba(255,255,255,0.12);

    border-radius: 14px;

    padding: 10px 16px;

    box-shadow: 0 8px 32px rgba(0,0,0,0.6);

    backdrop-filter: blur(20px);

    z-index: 9000;

    font-size: 0.85rem;

    color: rgba(255,255,255,0.8);

    white-space: nowrap;

}

#pwa-banner > i { color: var(--accent-color); font-size: 1.1rem; }

#pwa-install-btn {

    background: var(--accent-color);

    color: #000;

    border: none;

    border-radius: 8px;

    padding: 6px 14px;

    font-size: 0.8rem;

    font-weight: 700;

    font-family: inherit;

    cursor: pointer;

    transition: filter 0.15s;

}

#pwa-install-btn:hover { filter: brightness(1.1); }

.pwa-dismiss {

    background: none;

    border: none;

    color: rgba(255,255,255,0.3);

    cursor: pointer;

    padding: 2px;

    font-size: 1rem;

    line-height: 1;

    transition: color 0.15s;

}

.pwa-dismiss:hover { color: #fff; }



/* ── Filter view toggle ─────────────────────────────────────────────────── */

.filter-view-toggle {

    display: flex;

    align-items: center;

    gap: 4px;

    flex-shrink: 0;

}

.view-toggle-btn {

    width: 32px;

    height: 32px;

    display: inline-flex;

    align-items: center;

    justify-content: center;

    background: rgba(255,255,255,0.05);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 8px;

    color: rgba(255,255,255,0.35);

    cursor: pointer;

    font-size: 0.95rem;

    transition: background 0.15s, color 0.15s, border-color 0.15s;

}

.view-toggle-btn:hover,

.view-toggle-btn.active {

    background: color-mix(in srgb, var(--accent-color) 14%, transparent);

    color: var(--accent-color);

    border-color: color-mix(in srgb, var(--accent-color) 40%, transparent);

}



/* ── Platform pill count badge ──────────────────────────────────────────── */

.pill-count {

    display: inline-block;

    font-size: 0.62rem;

    font-weight: 800;

    color: rgba(255,255,255,0.35);

    background: rgba(255,255,255,0.08);

    border-radius: 20px;

    padding: 0 5px;

    margin-left: 4px;

    vertical-align: middle;

    line-height: 1.6;

}

.filter-pill.active .pill-count {

    color: rgba(0,0,0,0.5);

    background: rgba(0,0,0,0.15);

}



/* ── Note badge on card ─────────────────────────────────────────────────── */

.note-badge {

    position: absolute;

    top: 8px;

    left: 8px;

    width: 24px;

    height: 24px;

    border-radius: 6px;

    background: color-mix(in srgb, var(--accent-color) 18%, rgba(0,0,0,0.7));

    border: 1px solid color-mix(in srgb, var(--accent-color) 40%, transparent);

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 0.7rem;

    color: var(--accent-color);

    z-index: 3;

}



/* ── Compact art actions (note button in download modal) ────────────────── */

.compact-art-actions {

    margin-top: 8px;

}

.modal-note-btn {

    display: inline-flex;

    align-items: center;

    gap: 5px;

    padding: 5px 12px;

    border-radius: 8px;

    border: 1px solid rgba(255,255,255,0.15);

    background: rgba(255,255,255,0.07);

    color: rgba(255,255,255,0.6);

    font-size: 0.78rem;

    font-weight: 600;

    font-family: inherit;

    cursor: pointer;

    transition: background 0.15s, color 0.15s, border-color 0.15s;

}

.modal-note-btn:hover,

.modal-note-btn.has-note {

    background: color-mix(in srgb, var(--accent-color) 15%, transparent);

    color: var(--accent-color);

    border-color: color-mix(in srgb, var(--accent-color) 40%, transparent);

}



/* ── Note Modal ─────────────────────────────────────────────────────────── */

#note-modal {

    z-index: 10100;

}

.note-modal-content {

    width: 480px;

    max-width: 96vw;

}

.note-textarea {

    width: 100%;

    min-height: 140px;

    background: rgba(255,255,255,0.04);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 10px;

    color: rgba(255,255,255,0.85);

    font-family: inherit;

    font-size: 0.88rem;

    line-height: 1.6;

    padding: 12px 14px;

    resize: vertical;

    box-sizing: border-box;

    transition: border-color 0.15s;

    outline: none;

}

.note-textarea:focus {

    border-color: color-mix(in srgb, var(--accent-color) 50%, transparent);

}

.note-actions {

    display: flex;

    gap: 8px;

    margin-top: 12px;

}

.note-save-btn {

    flex: 1;

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 6px;

    padding: 9px 18px;

    border-radius: 10px;

    border: none;

    background: var(--accent-color);

    color: #000;

    font-size: 0.85rem;

    font-weight: 700;

    font-family: inherit;

    cursor: pointer;

    transition: filter 0.15s;

}

.note-save-btn:hover { filter: brightness(1.1); }

.note-delete-btn {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    padding: 9px 14px;

    border-radius: 10px;

    border: 1px solid rgba(255,77,109,0.25);

    background: rgba(255,77,109,0.08);

    color: rgba(255,77,109,0.7);

    font-size: 0.85rem;

    font-weight: 700;

    font-family: inherit;

    cursor: pointer;

    transition: background 0.15s, color 0.15s;

}

.note-delete-btn:hover { background: rgba(255,77,109,0.18); color: #ff4d6d; }



/* ── Multi-select bar ───────────────────────────────────────────────────── */

#select-bar {

    position: fixed;

    bottom: 24px;

    left: 50%;

    transform: translateX(-50%);

    display: flex;

    align-items: center;

    gap: 8px;

    background: rgba(14,14,22,0.97);

    border: 1px solid rgba(255,255,255,0.14);

    border-radius: 14px;

    padding: 8px 16px;

    box-shadow: 0 8px 32px rgba(0,0,0,0.6);

    backdrop-filter: blur(20px);

    z-index: 9500;

    font-size: 0.82rem;

    white-space: nowrap;

}

#select-bar-count {

    color: rgba(255,255,255,0.5);

    font-size: 0.8rem;

    margin-right: 4px;

}

.select-bar-btn {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    padding: 7px 14px;

    border-radius: 8px;

    border: none;

    font-size: 0.8rem;

    font-weight: 700;

    font-family: inherit;

    cursor: pointer;

    transition: filter 0.15s, background 0.15s;

}

.select-bar-queue {

    background: var(--accent-color);

    color: #000;

}

.select-bar-queue:hover { filter: brightness(1.1); }

.select-bar-fav {

    background: rgba(255,255,255,0.08);

    color: rgba(255,255,255,0.7);

    border: 1px solid rgba(255,255,255,0.1);

}

.select-bar-fav:hover { background: rgba(255,100,130,0.15); color: #ff6482; border-color: rgba(255,100,130,0.3); }

.select-bar-cancel {

    background: rgba(255,255,255,0.05);

    color: rgba(255,255,255,0.35);

    border: 1px solid rgba(255,255,255,0.08);

}

.select-bar-cancel:hover { background: rgba(255,255,255,0.1); color: #fff; }



/* ── Card select overlay (grid mode) ───────────────────────────────────── */

.card-select-overlay {

    position: absolute;

    inset: 0;

    background: rgba(0,0,0,0.35);

    z-index: 4;

    display: flex;

    align-items: flex-start;

    justify-content: flex-end;

    padding: 10px;

    cursor: pointer;

    border-radius: inherit;

}

.card-select-check {

    width: 22px;

    height: 22px;

    border-radius: 50%;

    border: 2px solid rgba(255,255,255,0.5);

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 0.75rem;

    color: transparent;

    transition: background 0.15s, border-color 0.15s, color 0.15s;

}

.card-select-check.checked {

    background: var(--accent-color);

    border-color: var(--accent-color);

    color: #000;

}

.game-card.selected .card-art {

    outline: 2px solid var(--accent-color);

    outline-offset: -2px;

}



/* ── List view ──────────────────────────────────────────────────────────── */

.grid.list-view {

    display: flex;

    flex-direction: column;

    gap: 6px;

}

.game-card-list {

    display: flex !important;

    flex-direction: row !important;

    align-items: center;

    gap: 12px;

    background: rgba(255,255,255,0.03);

    border: 1px solid rgba(255,255,255,0.07);

    border-radius: 12px;

    padding: 8px 12px;

    transition: background 0.15s, border-color 0.15s;

    min-height: unset !important;

    cursor: default;

}

.game-card-list:hover {

    transform: none;

    box-shadow: none;

    background: rgba(255,255,255,0.05);

    border-color: rgba(255,255,255,0.12);

}

.game-card-list.selected {

    border-color: color-mix(in srgb, var(--accent-color) 60%, transparent);

    background: color-mix(in srgb, var(--accent-color) 4%, transparent);

}

.list-card-select {

    align-items: center;

    justify-content: center;

    flex-shrink: 0;

}

.list-card-checkbox {

    width: 16px;

    height: 16px;

    accent-color: var(--accent-color);

    cursor: pointer;

}

.list-card-art {

    width: 60px;

    height: 38px;

    object-fit: cover;

    border-radius: 6px;

    flex-shrink: 0;

    cursor: pointer;

}

.list-card-body {

    flex: 1;

    min-width: 0;

    cursor: pointer;

}

.list-card-title {

    font-size: 0.88rem;

    font-weight: 700;

    color: rgba(255,255,255,0.9);

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

}

.list-card-meta {

    display: flex;

    align-items: center;

    gap: 8px;

    margin-top: 3px;

    font-size: 0.75rem;

    color: rgba(255,255,255,0.35);

    flex-wrap: wrap;

}

.list-platform-badge {

    font-size: 0.65rem;

    font-weight: 800;

    color: var(--accent-color);

    background: color-mix(in srgb, var(--accent-color) 12%, transparent);

    border: 1px solid color-mix(in srgb, var(--accent-color) 30%, transparent);

    border-radius: 4px;

    padding: 1px 5px;

}

.list-note-dot { color: var(--accent-color); font-size: 0.75rem; }

.list-card-actions {

    display: flex;

    align-items: center;

    gap: 5px;

    flex-shrink: 0;

}

.list-dl-btn {

    width: 32px !important;

    height: 32px !important;

    padding: 0 !important;

    display: inline-flex !important;

    align-items: center !important;

    justify-content: center !important;

    font-size: 0.9rem !important;

    flex-shrink: 0;

}



/* ── Stats Modal ────────────────────────────────────────────────────────── */

.stat-cards {

    display: grid;

    grid-template-columns: repeat(4, 1fr);

    gap: 10px;

    margin-bottom: 20px;

}

@media (max-width: 500px) { .stat-cards { grid-template-columns: repeat(2, 1fr); } }

.stat-card {

    background: rgba(255,255,255,0.04);

    border: 1px solid rgba(255,255,255,0.08);

    border-radius: 12px;

    padding: 14px 12px;

    text-align: center;

    display: flex;

    flex-direction: column;

    align-items: center;

    gap: 4px;

}

.stat-card i { font-size: 1.2rem; color: var(--accent-color); }

.stat-val {

    font-size: 1.5rem;

    font-weight: 800;

    color: #fff;

    line-height: 1.1;

}

.stat-label {

    font-size: 0.7rem;

    color: rgba(255,255,255,0.4);

    text-transform: uppercase;

    letter-spacing: 0.06em;

}

.stat-section-title {

    font-size: 0.7rem;

    font-weight: 800;

    text-transform: uppercase;

    letter-spacing: 0.1em;

    color: var(--accent-color);

    margin-bottom: 8px;

    margin-top: 4px;

}

.stat-rows { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }

.stat-row {

    display: flex;

    align-items: center;

    gap: 10px;

    font-size: 0.82rem;

}

.stat-row-label {

    width: 80px;

    flex-shrink: 0;

    color: rgba(255,255,255,0.6);

    font-weight: 600;

}

.stat-bar-track {

    flex: 1;

    height: 6px;

    background: rgba(255,255,255,0.07);

    border-radius: 4px;

    overflow: hidden;

}

.stat-bar-fill {

    height: 100%;

    background: var(--accent-color);

    border-radius: 4px;

    transition: width 0.4s ease;

}

.stat-row-val {

    width: 36px;

    text-align: right;

    color: rgba(255,255,255,0.4);

    font-size: 0.78rem;

    flex-shrink: 0;

}



/* ── Export / Import Modal ──────────────────────────────────────────────── */

.exim-row { display: flex; flex-direction: column; gap: 10px; }

.exim-card {

    display: flex;

    align-items: center;

    gap: 14px;

    background: rgba(255,255,255,0.04);

    border: 1px solid rgba(255,255,255,0.08);

    border-radius: 12px;

    padding: 14px 16px;

}

.exim-card > i { font-size: 1.4rem; color: var(--accent-color); flex-shrink: 0; }

.exim-card > div { flex: 1; min-width: 0; }

.exim-card-title { font-size: 0.88rem; font-weight: 700; color: #fff; }

.exim-card-desc { font-size: 0.78rem; color: rgba(255,255,255,0.4); margin-top: 2px; }

.exim-btn {

    flex-shrink: 0;

    padding: 8px 16px;

    border-radius: 8px;

    border: none;

    font-size: 0.8rem;

}

.exim-export-btn { background: var(--accent-color); color: #000; }

.exim-export-btn:hover { filter: brightness(1.1); }

.exim-import-btn { background: rgba(255,255,255,0.09); color: rgba(255,255,255,0.75); border: 1px solid rgba(255,255,255,0.12); }

.exim-import-btn:hover { background: rgba(255,255,255,0.14); color: #fff; }



/* ── Theme Studio Modal ─────────────────────────────────────────────────── */

.modal-kicker {

font-size: 0.65rem;

font-weight: 800;

text-transform: uppercase;

letter-spacing: 0.1em;

color: var(--accent-color);

margin-bottom: 2px;

}

.modal-title {

font-size: 1rem;

font-weight: 700;

color: #fff;

margin: 0;

}

.modal-close-btn.flat {

background: rgba(255,255,255,0.07);

border: 1px solid rgba(255,255,255,0.1);

color: rgba(255,255,255,0.6);

border-radius: 8px;

width: 32px;

height: 32px;

display: flex;

align-items: center;

justify-content: center;

cursor: pointer;

font-size: 1.1rem;

transition: background 0.15s, color 0.15s;

flex-shrink: 0;

}

.modal-close-btn.flat:hover { background: rgba(255,255,255,0.14); color: #fff; }



.themes-section-title {

font-size: 0.72rem;

font-weight: 800;

text-transform: uppercase;

letter-spacing: 0.1em;

color: var(--accent-color);

margin: 0 0 12px;

}



.themes-grid {

display: grid;

grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));

gap: 10px;

margin-bottom: 8px;

}



.theme-preview {

border-radius: 12px;

overflow: hidden;

border: 2px solid rgba(255,255,255,0.07);

cursor: pointer;

transition: border-color 0.2s, transform 0.15s, box-shadow 0.2s;

background: rgba(255,255,255,0.03);

}

.theme-preview:hover {

border-color: color-mix(in srgb, var(--accent-color) 50%, transparent);

transform: translateY(-2px);

box-shadow: 0 6px 20px rgba(0,0,0,0.4);

}

.theme-preview.active {

border-color: var(--accent-color);

box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 25%, transparent);

}



.theme-preview-ui {

width: 100%;

aspect-ratio: 4/3;

display: flex;

overflow: hidden;

}

.preview-sidebar {

width: 28%;

display: flex;

flex-direction: column;

align-items: center;

padding-top: 8px;

}

.preview-logo {

width: 12px;

height: 12px;

border-radius: 50%;

background: currentColor;

box-shadow: inherit;

}

.preview-content {

flex: 1;

display: flex;

flex-direction: column;

padding: 6px;

gap: 5px;

}

.preview-header { display: flex; }

.preview-search {

height: 8px;

border-radius: 4px;

flex: 1;

border: 1px solid;

}

.preview-grid {

display: grid;

grid-template-columns: repeat(3,1fr);

gap: 4px;

flex: 1;

}

.preview-card {

border-radius: 4px;

border: 1px solid;

padding: 4px;

display: flex;

flex-direction: column;

gap: 3px;

}

.preview-text-line {

height: 3px;

border-radius: 2px;

opacity: 0.8;

}

.preview-text-line.short { width: 60%; }



.theme-preview-footer {

display: flex;

align-items: center;

justify-content: space-between;

padding: 7px 10px;

border-top: 1px solid rgba(255,255,255,0.06);

gap: 6px;

}

.theme-preview-label {

font-size: 0.72rem;

font-weight: 700;

color: rgba(255,255,255,0.8);

white-space: nowrap;

overflow: hidden;

text-overflow: ellipsis;

flex: 1;

}

.preview-glow-indicator {

width: 10px;

height: 10px;

border-radius: 50%;

flex-shrink: 0;

}

.theme-actions {

display: flex;

gap: 4px;

}

.theme-actions button {

background: rgba(255,255,255,0.06);

border: none;

color: rgba(255,255,255,0.5);

border-radius: 6px;

width: 22px;

height: 22px;

display: flex;

align-items: center;

justify-content: center;

cursor: pointer;

font-size: 0.75rem;

transition: background 0.15s, color 0.15s;

}

.theme-actions button:hover { background: rgba(255,255,255,0.14); color: #fff; }

.delete-theme-btn:hover { background: rgba(255,77,77,0.2) !important; color: #ff4d4d !important; }



.custom-theme-form {

display: flex;

flex-direction: column;

gap: 12px;

}

.theme-name-input {

width: 100%;

box-sizing: border-box;

background: rgba(255,255,255,0.06);

border: 1px solid rgba(255,255,255,0.12);

border-radius: 10px;

color: #fff;

font-size: 0.9rem;

font-family: inherit;

padding: 10px 14px;

outline: none;

transition: border-color 0.2s;

}

.theme-name-input:focus { border-color: var(--accent-color); }

.theme-name-input::placeholder { color: rgba(255,255,255,0.25); }



.theme-color-row {

display: grid;

grid-template-columns: repeat(3, 1fr);

gap: 8px;

}

.theme-color-label {

display: flex;

flex-direction: column;

gap: 5px;

font-size: 0.68rem;

font-weight: 700;

text-transform: uppercase;

letter-spacing: 0.07em;

color: rgba(255,255,255,0.4);

}

.theme-color-input {

width: 100%;

box-sizing: border-box;

background: rgba(255,255,255,0.06);

border: 1px solid rgba(255,255,255,0.1);

border-radius: 8px;

color: #fff;

font-size: 0.8rem;

font-family: monospace;

padding: 7px 10px;

cursor: pointer;

outline: none;

transition: border-color 0.2s;

}

.theme-color-input:focus { border-color: var(--accent-color); }



.create-btn {

display: inline-flex;

align-items: center;

gap: 6px;

background: var(--accent-color);

color: #000;

border: none;

border-radius: 10px;

padding: 10px 20px;

font-size: 0.85rem;

font-weight: 800;

font-family: inherit;

cursor: pointer;

transition: filter 0.15s, transform 0.1s;

}

.create-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }



.theme-io-btn {

display: inline-flex;

align-items: center;

gap: 7px;

background: rgba(255,255,255,0.07);

border: 1px solid rgba(255,255,255,0.12);

color: rgba(255,255,255,0.7);

border-radius: 10px;

padding: 8px 16px;

font-size: 0.82rem;

font-weight: 700;

font-family: inherit;

cursor: pointer;

transition: background 0.15s, color 0.15s;

text-decoration: none;

white-space: nowrap;

}

.theme-io-btn:hover { background: rgba(255,255,255,0.13); color: #fff; }



/* ── PS4 Downloads Progress Panel ──────────────────────────────────────── */

#ps4-dl-panel {

    position: fixed;

    bottom: 24px;

    right: 24px;

    width: 320px;

    background: rgba(14,14,22,0.97);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 16px;

    box-shadow: 0 12px 48px rgba(0,0,0,0.65);

    backdrop-filter: blur(20px);

    -webkit-backdrop-filter: blur(20px);

    z-index: 9600;

    overflow: hidden;

    transition: box-shadow 0.2s;

}

.psdl-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: 10px 14px;

    border-bottom: 1px solid rgba(255,255,255,0.07);

    background: rgba(255,255,255,0.03);

}

.psdl-title {

    font-size: 0.82rem;

    font-weight: 700;

    color: rgba(255,255,255,0.85);

    display: flex;

    align-items: center;

    gap: 7px;

}

.psdl-title i { color: var(--accent-color); font-size: 1rem; }

.psdl-toggle {

    background: none;

    border: none;

    color: rgba(255,255,255,0.3);

    cursor: pointer;

    font-size: 1rem;

    line-height: 1;

    padding: 2px 4px;

    border-radius: 6px;

    transition: color 0.15s, background 0.15s;

}

.psdl-toggle:hover { color: #fff; background: rgba(255,255,255,0.08); }

.psdl-body {

    max-height: 280px;

    overflow-y: auto;

    padding: 8px 0;

}

.psdl-body:empty::after {

    content: 'No active installs';

    display: block;

    text-align: center;

    padding: 18px;

    font-size: 0.78rem;

    color: rgba(255,255,255,0.25);

    font-style: italic;

}

.psdl-task {

    padding: 10px 14px;

    border-bottom: 1px solid rgba(255,255,255,0.05);

}

.psdl-task:last-child { border-bottom: none; }

.psdl-task-top {

    display: flex;

    align-items: center;

    justify-content: space-between;

    margin-bottom: 6px;

    gap: 8px;

}

.psdl-task-name {

    font-size: 0.8rem;

    font-weight: 600;

    color: rgba(255,255,255,0.85);

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    flex: 1;

}

.psdl-task-pct {

    font-size: 0.75rem;

    font-weight: 700;

    color: var(--accent-color);

    flex-shrink: 0;

}

.psdl-bar-track {

    height: 4px;

    background: rgba(255,255,255,0.08);

    border-radius: 4px;

    overflow: hidden;

    margin-bottom: 5px;

}

.psdl-bar-fill {

    height: 100%;

    background: var(--accent-color);

    border-radius: 4px;

    transition: width 0.4s ease;

    box-shadow: 0 0 8px var(--accent-glow);

}

.psdl-task-meta {

    font-size: 0.7rem;

    color: rgba(255,255,255,0.35);

    display: flex;

    gap: 10px;

}

.psdl-status-done  { color: #00e676; }

.psdl-status-error { color: #ff4d6d; }

#ps4-dl-panel.minimised .psdl-body { display: none; }



/* ── Features Section ───────────────────────────────────────────────────── */

#features-section {

    position: fixed;

    top: 50%;

    left: 50%;

    transform: translate(-50%, -50%);

    z-index: 10050;

    width: 1100px;

    max-width: 96vw;

    max-height: 88vh;

    overflow-y: auto;

    background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.5) 100%);

    border: 1px solid rgba(255,255,255,0.1);

    border-radius: 18px;

    box-shadow: 0 32px 96px rgba(0,0,0,0.85);

    backdrop-filter: blur(30px);

    -webkit-backdrop-filter: blur(30px);

    animation: featPopIn 0.25s cubic-bezier(0.34,1.56,0.64,1);

}

@keyframes featPopIn {

    from { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }

    to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }

}

#feat-backdrop {

    position: fixed;

    inset: 0;

    background: rgba(0,0,0,0.72);

    backdrop-filter: blur(4px);

    -webkit-backdrop-filter: blur(4px);

    z-index: 10049;

}

.feat-section-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: 26px 28px 22px;

    border-bottom: 1px solid rgba(255,255,255,0.08);

    background: linear-gradient(180deg, rgba(255,255,255,0.05) 0%, transparent 100%);

    position: sticky;

    top: 0;

    z-index: 1;

    backdrop-filter: blur(20px);

    -webkit-backdrop-filter: blur(20px);

}

.feat-section-title {

    display: flex;

    flex-direction: column;

    align-items: flex-start;

    gap: 4px;

    font-size: 1.35rem;

    font-weight: 800;

    color: #fff;

    letter-spacing: -0.025em;

    line-height: 1;

}

.feat-section-title i { display: none; }

.feat-section-title::before {

    content: 'WHAT\'S INSIDE';

    display: block;

    font-size: 0.65rem;

    font-weight: 800;

    letter-spacing: 0.14em;

    color: var(--accent-color);

    margin-bottom: 6px;

}

.feat-dismiss-btn {

    background: none;

    border: none;

    color: rgba(255,255,255,0.25);

    cursor: pointer;

    font-size: 1rem;

    line-height: 1;

    width: 32px;

    height: 32px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 50%;

    background: rgba(255,255,255,0.07);

    border: 1px solid rgba(255,255,255,0.1);

    transition: background 0.15s, color 0.15s, transform 0.15s;

    flex-shrink: 0;

}

.feat-dismiss-btn:hover { color: #fff; background: rgba(255,255,255,0.15); border-color: rgba(255,255,255,0.2); transform: scale(1.1); }

.feat-card:hover > i { background: rgba(255,255,255,0.12); border-color: var(--accent-color); }

@media (max-width: 700px) { .feat-grid { grid-template-columns: repeat(2, 1fr); } }

.feat-grid {

    display: grid;

    grid-template-columns: repeat(5, 1fr);

    gap: 10px;

    padding: 20px;

    background: none;

}

.feat-card {

    display: flex;

    flex-direction: column;

    gap: 12px;

    padding: 18px 16px;

    background: rgba(255,255,255,0.03);

    border: 1px solid rgba(255,255,255,0.07);

    border-radius: 14px;

    transition: background 0.2s, border-color 0.2s, transform 0.2s, box-shadow 0.2s;

    cursor: default;

}

.feat-card:hover {

    background: rgba(255,255,255,0.06);

    border-color: rgba(255,255,255,0.18);

    transform: translateY(-2px);

    box-shadow: 0 8px 28px rgba(0,0,0,0.35);

}

.feat-card > i {

    width: 40px;

    height: 40px;

    min-width: 40px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 12px;

    background: rgba(255,255,255,0.07);

    border: 1px solid rgba(255,255,255,0.1);

    font-size: 1.15rem;

    color: var(--accent-color);

    flex-shrink: 0;

    opacity: 1;

    transition: background 0.2s, border-color 0.2s;

    margin-top: 0;

}

.feat-body {

    display: flex;

    flex-direction: column;

    gap: 5px;

}

.feat-title {

    font-size: 0.95rem;

    font-weight: 700;

    color: rgba(255,255,255,0.95);

    letter-spacing: -0.01em;

}

.feat-desc {

    font-size: 0.82rem;

    color: rgba(255,255,255,0.5);

    line-height: 1.5;

}



/* ── Layout rules (required at top-level; nested versions don't apply in modern browsers) ── */

.content {

    flex: 1;

    padding: 32px 40px;

    overflow-y: auto;

    min-height: 0;

    background: radial-gradient(circle at top right, var(--glass) 0%, transparent 50%);

}



.filter-bar {

    display: flex;

    align-items: center;

    flex-wrap: wrap;

    gap: 8px;

    padding: 18px 24px;

    margin-bottom: 32px;

    background: linear-gradient(135deg, var(--sidebar-color) 0%, rgba(0,0,0,0.18) 100%);

    border: 1px solid rgba(255, 255, 255, 0.07);

    border-radius: 20px;

    box-shadow: 0 8px 24px rgba(0,0,0,0.2);

    position: sticky;

    top: 12px;

    z-index: 200;

    backdrop-filter: blur(20px);

    -webkit-backdrop-filter: blur(20px);

}



.filter-group {

    display: flex;

    align-items: center;

    gap: 10px;

}



.filter-select {

    padding: 6px 12px;

    border-radius: 12px;

    border: 1px solid rgba(255,255,255,0.1);

    background: rgba(255,255,255,0.05);

    color: #fff;

    font-size: 0.82rem;

    font-weight: 600;

    cursor: pointer;

    outline: none;

    transition: border-color 0.2s ease, box-shadow 0.2s ease;

    -webkit-appearance: none;

    appearance: none;

    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='rgba(255,255,255,0.4)'/%3E%3C/svg%3E");

    background-repeat: no-repeat;

    background-position: right 10px center;

    padding-right: 28px;

}



.filter-select:focus {

    border-color: var(--accent-color);

    box-shadow: 0 0 0 2px var(--glass);

}



.filter-select option {

    background: var(--sidebar-color);

    color: #fff;

}



.filter-results {

    margin-left: auto;

    font-size: 1rem;

    font-weight: 800;

    color: #fff;

    white-space: nowrap;

    letter-spacing: 0.3px;

}



.filter-pill.active {

    background: var(--accent-color);

    border-color: var(--accent-color);

    color: #fff;

    box-shadow: 0 0 14px var(--accent-glow);

}



.filter-group.filter-pagination {

    padding-left: 16px;

    border-left: 1px solid rgba(255,255,255,0.1);

    gap: 10px;

}



#page-indicator {

    font-size: 0.88rem;

    font-weight: 800;

    color: #fff;

    white-space: nowrap;

}



.search-bar i {

    color: rgba(255,255,255,0.45);

    font-size: 1rem;

    flex-shrink: 0;

}



.search-bar input {

    flex: 1;

    background: transparent;

    border: none;

    outline: none;

    color: #fff;

    font-size: 0.9rem;

    font-family: inherit;

    min-width: 0;

}



.search-bar input::placeholder {

    color: rgba(255,255,255,0.32);

}



.page-btn {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    width: 26px;

    height: 26px;

    border-radius: 50%;

    border: 1px solid rgba(255,255,255,0.15);

    background: rgba(255,255,255,0.06);

    color: rgba(255,255,255,0.7);

    font-size: 1.1rem;

    line-height: 1;

    cursor: pointer;

    transition: background 0.2s, border-color 0.2s, color 0.2s, box-shadow 0.2s;

    flex-shrink: 0;

}



.page-btn:hover:not(:disabled) {

    background: var(--accent-color);

    border-color: var(--accent-color);

    color: #000;

    box-shadow: 0 0 10px var(--accent-glow);

}



.page-btn:disabled {

    opacity: 0.3;

    cursor: not-allowed;

}



