body {
    
    background: url(../assets/images/background.png);
    background-size: auto 100vh; 
    /*
    background: url(../assets/images/bg3.png);
    background-size: 100vw 100vh;
    */
    font-family: "Open Sans", sans-serif;
    margin: 0;
    overflow: hidden;
}

h1 {
    color: #a3a4a8;
    margin: 0;
    cursor: pointer;
    font-size: 2.5vw;
    font-weight: 100;
}
/* changed to class selector to match HTML */
.SupportText {
    color: #000000;
    margin: 0;
    cursor: wait;
    font-size: 2.5vw;
    font-weight: 100;
}

h2 {
    color: #ebebeb;
    margin: 0.3vw 0.7vw;
    font-size: 1.3vw;
    font-weight: 100;
}

h3 {
    color: white;
    margin: 0;
    font-size: 1.2vw;
    font-weight: 100;
}

h1.selected {
    color: white;
}

.tile.selected {
    opacity: 1;
}

.user {
    position: absolute;
    display: flex;
    align-items: center;
    right: 5vw;
    top: 2.5vw;
    gap: 1vw;
}

.online-count {
    color: #a3a4a8;
    font-size: 0.9vw;
    font-weight: 100;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2vw;
}

.online-count #onlineNumber {
    color: #00ff00;
    font-size: 1.1vw;
    font-weight: bold;
}

.user img {
    width: 2.5vw;
    height: auto;
}

.navbar {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    justify-content: center;
    margin-top: 4.5vw; /* moved up */
    gap: 2.5vw;
    font-size: 2.5vh;
}

.searchbar {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    top: 40vh; /* raised up */
    width: 4.5vw;
    height: 4vw;
    background: rgba(0, 0, 0, 0.5);
}

.searchbar h1 {
    color: #ebebeb;
    font-size: 3vw;
}

.tiles {
    display: flex;
    width: fit-content;
    margin: 3vw auto 0 auto; /* raised tiles closer to navbar */
    transition: transform 0.3s ease-in-out;
}

.tile {
    display: flex;
    justify-content: center;
    margin: 3vw 7vw;
    width: 64vw;
    gap: 0.4vw;
    opacity: 0.75;
    transition: opacity 0.3s ease-in-out
}

.tile.big {
    width: 72vw; /* slightly narrower to avoid horizontal overflow */
}

.left-side {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    align-content: flex-end;
    gap: 0.4vw;
    max-height: 28.7vw;
}

.middle-side {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    gap: 0.4vw;
    max-width: 55.2vw;
    max-height: 27.4vw;
}

.right-side {
    width: 50.1vw;
}

.right-side.big {
    width: 71vw;
}

.banner {
    display: flex;
    align-items: flex-end;
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
    background: url(../assets/images/logo.png) center center / 25vw no-repeat #1d1d1d;
    transition: transform 0.35s cubic-bezier(.2,.9,.2,1), box-shadow 0.35s ease-in-out;
}

.banner:hover {
    scale: 1.05;
    box-shadow: black 0 0 20px;
}

/* clickable banner (last-played) */
.banner.clickable { cursor: pointer; }
.banner.clickable:hover { transform: scale(1.02); box-shadow: 0 20px 60px rgba(0,0,0,0.6); }

/* Launching animation and spinner overlay */
.banner.launching {
    z-index: 200;
    box-shadow: 0 30px 90px rgba(0,0,0,0.8);
    /* move to fixed center and expand to fill most of viewport */
    position: fixed;
    top: 50%;
    left: 50%;
    width: 75vw;
    height: 75vh;
    transform: translate(-50%, -50%) scale(1);
    transition: transform 0.4s cubic-bezier(.2,.9,.2,1), width 0.4s ease, height 0.4s ease, top 0.4s ease, left 0.4s ease, box-shadow 0.35s ease-in-out;
    /* ensure the background image scales to fill the expanded area */
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
}
.launch-spinner {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.22);
    pointer-events: none;
}
.launch-spinner .spinner {
    width: 4.2vw;
    height: 4.2vw;
    border-radius: 50%;
    border: 0.5vw solid rgba(255,255,255,0.12);
    border-top-color: rgba(255,255,255,0.95);
    animation: spin 0.9s linear infinite;
    box-shadow: 0 6px 18px rgba(0,0,0,0.45);
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Ingame font */
@font-face {
    font-family: 'Ingame';
    src: url('/assets/fonts/ingame.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

/* Fullscreen centered overlay used for launching */
.launch-overlay {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
    z-index: 500;
    opacity: 0;
    transition: opacity 160ms ease-in;
    overflow: hidden;
}
.launch-overlay.visible { opacity: 1; }
.launch-overlay .launch-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    border-radius: 0;
    box-shadow: none;
    /* start slightly smaller and scale to full size when overlay becomes visible */
    transform: scale(0.88);
    opacity: 0.0;
    transform-origin: center center;
    transition: transform 340ms cubic-bezier(.2,.9,.2,1), opacity 180ms ease-in;
}
.launch-overlay.visible .launch-image {
    transform: scale(1);
    opacity: 1;
}
.launch-overlay .launch-spinner { position: absolute; inset: 0; display:flex; align-items:center; justify-content:center; background: rgba(0,0,0,0.12); }
.launch-overlay .launch-spinner .spinner { width: 4.2vw; height: 4.2vw; border-radius: 50%; border: 0.5vw solid rgba(255,255,255,0.12); border-top-color: rgba(255,255,255,0.95); animation: spin 0.9s linear infinite; box-shadow: 0 6px 18px rgba(0,0,0,0.45); }

.launch-overlay .launch-iframe { width: 100vw; height: 100vh; border: none; border-radius: 0; box-shadow: none; background: black; z-index: 500; }
.launch-overlay .launch-spinner { position: absolute; inset: 0; display:flex; align-items:center; justify-content:center; background: rgba(0,0,0,0.12); z-index: 900; }
.launch-overlay .launch-spinner .spinner { width: 4.2vw; height: 4.2vw; border-radius: 50%; border: 0.5vw solid rgba(255,255,255,0.12); border-top-color: rgba(255,255,255,0.95); animation: spin 0.9s linear infinite; box-shadow: 0 6px 18px rgba(0,0,0,0.45); }
/* removed .launch-close-btn per UX request (Shift+Tab menu used instead) */

/* In-game menu styles (Shift+Tab) */
.in-game-menu { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; z-index: 910; }
.in-game-menu {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; z-index: 910;
}
/* dim the game behind the menu */
.in-game-menu::before {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 905;
    opacity: 0;
    transition: opacity 160ms ease-in;
}
.in-game-menu.show::before { opacity: 1; }
.in-game-menu .menu-box {
    pointer-events: auto;
    background: rgba(12,12,12,0.96);
    padding: 1.2vw;
    border-radius: 0.8vw;
    display:flex;
    gap: 0.8vw;
    align-items:center;
    z-index: 910;
    font-family: Ingame, sans-serif;
    /* position bottom-left */
    position: absolute;
    left: 2.5vw;
    bottom: 2.5vh;
}
.in-game-menu .menu-btn {
    background: #1a1a1a;
    color: #fff;
    border: 0.12vw solid rgba(255,255,255,0.06);
    padding: 0.8vw 1.2vw;
    font-size: 1.2vw;
    border-radius: 0.6vw;
    cursor: pointer;
    font-family: Ingame, sans-serif;
}
.in-game-menu .menu-btn:hover { background: #262626; }

/* Exit transition: fade/scale out the iframe before removing overlay */
.launch-overlay.exiting .launch-iframe {
    transition: transform 380ms ease, opacity 320ms ease;
    transform: scale(0.96);
    opacity: 0;
}
.launch-overlay.exiting .launch-image { transition: opacity 260ms ease; opacity: 0; }

.rectangle {
    display: flex;
    align-items: flex-end;
    width: 13.5vw;
    height: 9.3vw;
    cursor: pointer;
    transition: scale 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
}

.rectangle:hover {
    scale: 1.1;
    box-shadow: black 0 0 20px;
}

.rectangle.one {background: url(../assets/images/icons/open-tray.png) center center / 6vw no-repeat #008a00;}
.rectangle.one:hover {background: url(../assets/images/icons/open-tray.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.two {background: url(../assets/images/icons/my-pins.png) center center / 6vw no-repeat #008a00;}
.rectangle.two:hover {background: url(../assets/images/icons/my-pins.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.three {background: url(../assets/images/icons/recent.png) center center / 6vw no-repeat #008a00;}
.rectangle.three:hover {background: url(../assets/images/icons/recent.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.four {background: url(../assets/images/icons/friends.png) center center / 6vw no-repeat #008a00;}
.rectangle.four:hover {background: url(../assets/images/icons/friends.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.five {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat #008a00;}
.rectangle.five:hover {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.six {background: url(../assets/images/icons/sign-out.png) center center / 6vw no-repeat #008a00;}
.rectangle.six:hover {background: url(../assets/images/icons/sign-out.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.seven {background: url(../assets/images/icons/games.png) center center / 6vw no-repeat #008a00;}
.rectangle.seven:hover {background: url(../assets/images/icons/games.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.eight {background: url(../assets/images/icons/store.png) center center / 6vw no-repeat #008a00;}
.rectangle.eight:hover {background: url(../assets/images/icons/store.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.nine {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat #008a00;}
.rectangle.nine:hover {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.ten {background: url(../assets/images/icons/tiles.png) center center / 6vw no-repeat #008a00;}
.rectangle.ten:hover {background: url(../assets/images/icons/tiles.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.eleven {background: url(../assets/images/icons/store.png) center center / 6vw no-repeat #008a00;}
.rectangle.eleven:hover {background: url(../assets/images/icons/store.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.twelve {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat #008a00;}
.rectangle.twelve:hover {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.thirteen {background: url(../assets/images/icons/xbox.png) center center / 6vw no-repeat #008a00;}
.rectangle.thirteen:hover {background: url(../assets/images/icons/xbox.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.fourteen {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat #008a00;}
.rectangle.fourteen:hover {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.fifteen {background: url(../assets/images/icons/tiles.png) center center / 6vw no-repeat #008a00;}
.rectangle.fifteen:hover {background: url(../assets/images/icons/tiles.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.sixteen {background: url(../assets/images/icons/xbox.png) center center / 6vw no-repeat #008a00;}
.rectangle.sixteen:hover {background: url(../assets/images/icons/xbox.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.seventeen {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat #008a00;}
.rectangle.seventeen:hover {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.eighteen {background: url(../assets/images/icons/tiles.png) center center / 6vw no-repeat #008a00;}
.rectangle.eighteen:hover {background: url(../assets/images/icons/tiles.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.nineteen {background: url(../assets/images/icons/store.png) center center / 6vw no-repeat #008a00;}
.rectangle.nineteen:hover {background: url(../assets/images/icons/store.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.rectangle.twenty {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat #008a00;}
.rectangle.twenty:hover {background: url(../assets/images/icons/search.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}

.square {
    display: flex;
    align-items: flex-end;
    width: 13.5vw;
    height: 13.5vw;
    cursor: pointer;
    transition: scale 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
}

.square:hover {
    scale: 1.1;
    box-shadow: black 0 0 20px;
}

.square.one {background: url(../assets/images/icons/system.png) center center / 6vw no-repeat #008a00;}
.square.one:hover {background: url(../assets/images/icons/system.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.two {background: url(../assets/images/icons/profile.png) center center / 6vw no-repeat #008a00;}
.square.two:hover {background: url(../assets/images/icons/profile.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.three {background: url(../assets/images/icons/preferences.png) center center / 6vw no-repeat #008a00;}
.square.three:hover {background: url(../assets/images/icons/preferences.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.four {background: url(../assets/images/icons/kinect.png) center center / 6vw no-repeat #008a00;}
.square.four:hover {background: url(../assets/images/icons/kinect.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.five {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat #008a00;}
.square.five:hover {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.six {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat #008a00;}
.square.six:hover {background: url(../assets/images/icons/placeholder.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.seven {background: url(../assets/images/icons/family.png) center center / 6vw no-repeat #008a00;}
.square.seven:hover {background: url(../assets/images/icons/family.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}
.square.eight {background: url(../assets/images/icons/sign-out.png) center center / 6vw no-repeat #008a00;}
.square.eight:hover {background: url(../assets/images/icons/sign-out.png) center center / 6vw no-repeat, linear-gradient(to left top, #008a00, #58a658);}

.tips {
    position: absolute;
    display: flex;
    align-items: center;
    bottom: 2.2vw;
    left: 9vw;
    gap: 0.2vw;
}

.tips img {
    width: 2vw;
    height: auto;
}

.tips h2 {
    margin: 0 1vw 0 0;
    font-size: 1.5vw;
    text-shadow: 0 0 2px black;
}

/* Games library overlay */
.library-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.85);
    z-index: 60;
    transform: translateY(100%);
    transition: transform 0.35s ease-in-out;
    pointer-events: none;
}
.library-overlay.open {
    transform: translateY(0);
    pointer-events: auto;
}
.library {
    width: 88vw;
    height: 78vh;
    background: linear-gradient(180deg,#121212,#1e1e1e);
    border-radius: 0.8vw;
    padding: 1.6vw;
    box-shadow: 0 20px 60px rgba(0,0,0,0.7);
    display: flex;
    flex-direction: column;
}

/* Username overlay */
.username-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.7);
    z-index: 80;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.25s ease;
}
.username-overlay[aria-hidden="false"] { pointer-events: auto; opacity: 1; }
.username-box {
    width: 36vw;
    background: linear-gradient(180deg,#0f0f0f,#1b1b1b);
    border-radius: 0.8vw;
    padding: 2vw;
    display: flex;
    flex-direction: column;
    gap: 1vw;
    align-items: center;
    box-shadow: 0 24px 60px rgba(0,0,0,0.7);
}
.username-box h2 { color: #fff; margin: 0; font-size: 2vw; }
.username-box .muted { color: #bdbdbd; margin: 0; }
.username-box input {
    width: 80%;
    padding: 0.8vw 1vw;
    font-size: 1.2vw;
    border-radius: 0.6vw;
    border: 0.12vw solid rgba(255,255,255,0.08);
    background: #0b0b0b;
    color: #fff;
}
.username-actions { display: flex; justify-content: center; width: 100%; }
.username-actions .close-btn { padding: 0.6vw 1.2vw; }
.library-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: #fff;
    margin-bottom: 1vw;
}
.close-btn {
    background: transparent;
    border: 0.12vw solid rgba(255,255,255,0.12);
    color: #fff;
    padding: 0.6vw 1vw;
    border-radius: 0.6vw;
    cursor: pointer;
}
.library-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(12.5vw, 1fr));
    gap: 1vw;
    overflow: auto;
    padding: 0.4vw;
    height: calc(100% - 3.4vw);
}
.game-card {
    background: linear-gradient(180deg,#222,#151515);
    background-size: cover;
    background-position: center center;
    height: 11vw;
    border-radius: 0.6vw;
    display: flex;
    align-items: flex-end;
    padding: 0.8vw;
    color: #fff;
    cursor: pointer;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border 0.18s ease;
    border: 0.12vw solid transparent;
    position: relative;
}
.game-card:hover { transform: translateY(-0.5vw); box-shadow: 0 10px 30px rgba(0,0,0,0.6); }
.game-card.selected { border-color: rgba(0,138,0,0.9); box-shadow: 0 12px 34px rgba(0,138,0,0.08); }
.game-title { font-size: 1.1vw; font-weight: 600; position: absolute; left: 0.8vw; bottom: 0.8vw; background: rgba(0,0,0,0.45); padding: 0.25vw 0.6vw; border-radius: 0.4vw; }

/* Launching style for game cards to enlarge with spinner overlay */
.game-card.launching {
    z-index: 220;
    box-shadow: 0 28px 80px rgba(0,0,0,0.7);
    position: fixed;
    top: 50%;
    left: 50%;
    width: 75vw;
    height: 75vh;
    transform: translate(-50%, -50%) scale(1);
    transition: transform 0.4s cubic-bezier(.2,.9,.2,1), width 0.4s ease, height 0.4s ease, top 0.4s ease, left 0.4s ease, box-shadow 0.35s ease-in-out;
    border-radius: 0.6vw;
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
}
.game-card .launch-spinner { position: absolute; inset: 0; display:flex; align-items:center; justify-content:center; background: rgba(0,0,0,0.18); pointer-events: none; }
.game-card .launch-spinner .spinner { width: 28%; height: 28%; border-radius: 50%; border: 0.5vw solid rgba(255,255,255,0.12); border-top-color: rgba(255,255,255,0.95); animation: spin 0.9s linear infinite; }