/* Global Styles */
html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
    font-family: 'Arial', sans-serif;
}

body { 
    margin: 0; 
    background: linear-gradient(to bottom, 
        #0a1628 0%,           /* Deep navy at top */
        #1a2a4a 25%,          /* Dark blue */
        #2d4663 50%,          /* Medium blue */
        #354a63 75%,          /* Darker blue */
        #2a3d56 90%,          /* Deeper blue */
        #1f3347 100%          /* Dark blue at horizon */
    );
    background-attachment: fixed;
}

canvas { 
    position: fixed;
    z-index: -1;
}

/* Slider Container */
#slider-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    z-index: 1;
}

/* Wrapper for all pages */
#pages-wrapper {
    position: relative;
    width: 300%; /* 3x width for 3 pages side by side */
    height: 100%;
    display: flex;
    transition: transform 0.5s ease-in-out;
    transform: translateX(-33.333%); /* Start with center page visible */
}

/* Individual page containers */
.page-container {
    width: 33.333%; /* Each takes 1/3 of the wrapper */
    height: 100%;
    overflow-y: auto; /* Allow scrolling within each page */
    box-sizing: border-box;
}

/* Animation classes for horizontal sliding */
#pages-wrapper.slide-left {
    transform: translateX(0); /* Slide to show left page */
}

#pages-wrapper.slide-center {
    transform: translateX(-33.333%); /* Slide to show center page */
}

#pages-wrapper.slide-right {
    transform: translateX(-66.666%); /* Slide to show right page */
}

/* Vertical sliding container */
.vertical-wrapper {
    position: absolute;
    width: 100%;
    height: 300%; /* 3x height for 3 pages stacked vertically */
    display: flex;
    flex-direction: column;
    transition: transform 0.5s ease-in-out;
    transform: translateY(-33.333%); /* Start with center page visible */
}

/* Vertical page containers */
.vertical-page {
    width: 33.333%; /* Each takes 1/3 of the wrapper width */
    height: 33.333%; /* Each takes 1/3 of the wrapper height */
    overflow-y: auto;
}

/* Animation classes for vertical sliding */
.vertical-wrapper.slide-top {
    transform: translateY(0); /* Slide to show top page */
}

.vertical-wrapper.slide-center {
    transform: translateY(-33.333%); /* Slide to show center page */
}

.vertical-wrapper.slide-bottom {
    transform: translateY(-66.666%); /* Slide to show bottom page */
}

/* Navigation Buttons - Common Properties */
#top-nav, #bottom-nav, #left-nav, #right-nav {
    position: fixed;
    z-index: 100;
}

#top-nav-btn, #bottom-nav-btn, #left-nav-btn, #right-nav-btn {
    background-color: rgba(0, 0, 0, 0.3);
    border: none;
    cursor: pointer;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.3s ease;
}

#top-nav-btn:hover, #bottom-nav-btn:hover, #left-nav-btn:hover, #right-nav-btn:hover {
    background-color: rgba(0, 0, 0, 0.5);
}

#top-nav-btn::after, #bottom-nav-btn::after, #left-nav-btn::after, #right-nav-btn::after {
    content: "";
    display: block;
    width: 20px;
    height: 20px;
    border-left: 3px solid rgba(140, 255, 249, 0.5);
    border-bottom: 3px solid rgba(140, 255, 249, 0.5);
}

#top-nav-btn:hover::after, #bottom-nav-btn:hover::after, #left-nav-btn:hover::after, #right-nav-btn:hover::after {
    border-left: 3px solid rgba(140, 255, 249, 1);
    border-bottom: 3px solid rgba(140, 255, 249, 1);
}

/* Top Navigation */
#top-nav {
    top: -5px;
    left: 50%;
    transform: translateX(-50%);
}
#top-nav-btn {
    width: 100px;
    height: 50px;
    border-radius: 0 0 50px 50px;
}
#top-nav-btn::after {
    transform: translateY(5px) rotate(135deg);
}

/* Bottom Navigation */
#bottom-nav {
    bottom: -5px;
    left: 50%;
    transform: translateX(-50%);
}
#bottom-nav-btn {
    width: 100px;
    height: 50px;
    border-radius: 50px 50px 0 0;
}
#bottom-nav-btn::after {
    transform: translateY(-5px) rotate(-45deg);
}

/* Left Navigation */
#left-nav {
    left: -5px;
    top: 50%;
    transform: translateY(-50%);
}
#left-nav-btn {
    width: 50px;
    height: 100px;
    border-radius: 0 50px 50px 0;
}
#left-nav-btn::after {
    transform: translateX(5px) rotate(45deg);
}

/* Right Navigation */
#right-nav {
    right: -5px;
    top: 50%;
    transform: translateY(-50%);
}
#right-nav-btn {
    width: 50px;
    height: 100px;
    border-radius: 50px 0 0 50px;
}
#right-nav-btn::after {
    transform: translateX(-5px) rotate(-135deg);
}

/* Page name hover effect */
#top-nav-btn, #bottom-nav-btn, #left-nav-btn, #right-nav-btn {
    position: relative;
}

#top-nav-btn::before, #bottom-nav-btn::before, #left-nav-btn::before, #right-nav-btn::before {
    content: attr(data-page-name);
    position: absolute;
    color: rgb(140, 255, 249);
    font-size: 14px;
    opacity: 0;
    transition: opacity 0.3s ease;
    white-space: nowrap;
    z-index: 101;
    text-shadow: 0px 0px 3px rgba(0, 0, 0, 0.8);
    font-weight: bold;
}

#top-nav-btn:hover::before, #bottom-nav-btn:hover::before, #left-nav-btn:hover::before, #right-nav-btn:hover::before {
    opacity: 1;
}

/* Position the page name labels */
#top-nav-btn::before {
    top: 60%;
    left: 50%;
    transform: translateX(-50%);
}

#bottom-nav-btn::before {
    bottom: 60%;
    left: 50%;
    transform: translateX(-50%);
}

#left-nav-btn::before {
    left: 60%;
    top: 50%;
    transform: translateY(-50%);
}

#right-nav-btn::before {
    right: 60%;
    top: 50%;
    transform: translateY(-50%);
}

/* Overlays */
#top-overlay, #bottom-overlay, #left-overlay, #right-overlay {
    position: fixed;
    background-color: rgba(0, 0, 0, 0.9);
    z-index: 90;
    display: none;
}

#top-overlay, #bottom-overlay {
    width: 100%;
    height: 40%;
    left: 0;
}

#left-overlay, #right-overlay {
    width: 40%;
    height: 100%;
    top: 0;
}

#top-overlay {
    top: 0;
}

#bottom-overlay {
    bottom: 0;
}

#left-overlay {
    left: 0;
}

#right-overlay {
    right: 0;
}

/* Gear Menu Container */
#gear-menu-container {
    position: fixed;
    top: 20px;
    right: 20px;
    width: 50px;
    height: 50px;
    z-index: 200;
    /* Expand the hover area to include the space where spoke icons appear */
    /* This creates an invisible padding that maintains the hover state */
}

/* Invisible hover area extension */
#gear-menu-container::before {
    content: '';
    position: absolute;
    top: -80px;
    left: -80px;
    right: -20px;
    bottom: -20px;
    z-index: -1;
}

/* Menu Icon (Gear) */
#menu-icon {
    position: absolute;
    top: 0;
    left: 0;
    width: 50px;
    height: 50px;
    cursor: pointer;
    z-index: 202;
    background-image: url('../images/icons/gear-wheel-techy.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    transition: transform 0.6s ease, filter 0.3s ease;
    /* Rusty copper color filter */
    filter: brightness(0.8) saturate(1.2) hue-rotate(20deg) drop-shadow(0 0 5px rgba(184, 115, 51, 0.4));
}

/* #gear-menu-container:hover #menu-icon, */
#gear-menu-container:has(.gear-spoke:hover) #menu-icon,
#gear-menu-container.menu-open #menu-icon {
    transform: rotate(180deg);
    filter: brightness(1.1) saturate(1.3) hue-rotate(20deg) drop-shadow(0px 0px 15px rgb(184, 115, 51));
}

/* Gear Spokes Container */
#gear-spokes {
    position: absolute;
    top: 25px;
    left: 25px;
    width: 0;
    height: 0;
    z-index: 201;
    transition: transform 0.6s ease;
}

/* #gear-menu-container:hover #gear-spokes, */
#gear-menu-container:has(.gear-spoke:hover) #gear-spokes,
#gear-menu-container.menu-open #gear-spokes {
    transform: rotate(180deg);
}

/* Individual Spoke with Icon */
.gear-spoke {
    position: absolute;
    width: 70px;
    height: 2px;
    /* background: linear-gradient(to right, rgba(140, 255, 249, 0.6), rgba(140, 255, 249, 0)); */
    transform-origin: left center;
    opacity: 0;
    transition: opacity 0.4s ease;
}

/* #gear-menu-container:hover .gear-spoke, */
#gear-menu-container:has(.gear-spoke:hover) .gear-spoke,
#gear-menu-container.menu-open .gear-spoke {
    opacity: 1;
}

/* Spoke Icon Wrapper (outer button with circle background) */
.spoke-icon-wrapper {
    position: absolute;
    right: -20px;
    top: 50%;
    transform: translateY(-50%) rotate(0deg);
    width: 32px;
    height: 32px;
    background: transparent;
    border: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.6s ease;
    color: rgba(140, 190, 255, 0.67);
    padding: 0;
    overflow: visible;
}

/* Inner icon container (holds the SVG icon) */
.spoke-icon {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

/* Counter-rotate icons to upright when gear menu or spokes are hovered */
/* #gear-menu-container:hover .spoke-icon-wrapper, */
#gear-menu-container:has(.gear-spoke:hover) .spoke-icon-wrapper,
#gear-menu-container.menu-open .spoke-icon-wrapper {
    transform: translateY(-50%) rotate(calc(-1 * (var(--spoke-angle) + 180deg)));
}

.spoke-icon svg {
    width: 20px;
    height: 20px;
    stroke: rgb(140, 255, 249);
    fill: none;
}

.spoke-icon-wrapper:hover {
    background: rgba(110, 189, 185, 0.3);
    box-shadow: 0 0 20px rgba(140, 255, 249, 0.6);
    transform: translateY(-50%) rotate(calc(-1 * (var(--spoke-angle) + 180deg))) scale(1.2);
}

.spoke-icon-wrapper:focus {
    outline: none;
}
