/* style.css */

@font-face {
    font-family: 'Rubik Dirt';
    src: url('rubik-dirt.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
    font-display: block; /* Forces the browser to wait for the font, killing the flash */
}

/* 2. Register Rubik Regular (Body text) */
@font-face {
    font-family: 'Rubik';
    src: url('rubik-regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap; 
}

/* 3. Register Rubik Medium (Nav links & bold text) */
@font-face {
    font-family: 'Rubik';
    src: url('rubik-medium.woff2') format('woff2');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

/* Using a CSS variable makes it easy to change the theme later */
:root {
    --bg-color: #000000;
    --text-color: #e0e0e0;
    --accent-color: #E3CD46;
    --secondary-text: #a0a0a0;
    --light-grey: #a0a0a0;
    --header-font: 'Rubik Dirt', system-ui, sans-serif;
    --body-font: 'Rubik', system-ui, sans-serif;
}

header {
    display: flex;
    flex-direction: column;
    align-items: center; /* Centers H1 and Nav horizontally */
    text-align: center;
    margin-bottom: 40px;
}

body {
    font-family: var(--body-font); /* Standard Rubik for everything */
    line-height: 1.6;
    background-color: var(--bg-color);
    color: var(--text-color);
    
    /* Layout */
    max-width: 650px;
    margin: 40px auto;
    padding: 0 20px;
}

h1, h2, h3 {
    color: #ffffff;
    margin-top: 1.5em;
}

h1 {
    font-family: var(--header-font); /* Rubik Dirt for the band name */
    margin: 0 0 10px 0;
    padding: 0;
    font-size: 3rem; /* Adjust this to get the height you like */
    text-transform: uppercase;
    
    /* This is the key: adjust this value until the 
       edges of the text line up with your nav links */
    letter-spacing: 0.2em; 
    font-weight: 400;
    
    /* Forces the H1 to stay within the same container as the nav */
    width: 100%;
    text-align: center;
}

h2 {
    font-family: var(--header-font);
    font-size: 1.8rem;
    letter-spacing: 0.05em;
    color: #ffffff;
    text-align: center;
    font-weight: 400;
}



a {
    color: var(--accent-color);
    text-decoration: none;
    transition: opacity 0.2s;
}

a:hover {
    opacity: 0.7;
    text-decoration: underline;
}

ul {
    padding-left: 20px;
}

li {
    margin-bottom: 10px;
}

.footer {
    display: flex;
    justify-content: center;
    margin-top: 60px;
    font-size: 0.8em;
    color: var(--secondary-text);
    padding-top: 20px;
}

nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 15px;
    
    padding-top: 15px;
    width: 100%;
}

nav a {
    font-family: var(--body-font);
    font-weight: 500;
    color: var(--accent-color);
}

nav a:hover {
    text-decoration: none;
}

nav a.active {
    color: #ffffff; /* Makes the active page link pure white */
    /* border-bottom: 2px solid var(--accent-color); */
}

/* Centers the main content block */
.home-main {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.logo-container {
    width: 100%;
    display: flex;
    justify-content: center;
    margin-bottom: 30px;
}

/* Constrains your logo size so it doesn't blow up the page */
.band-logo {
    max-width: 100%;
    height: auto;
}

.social-links-container {
    display: flex;
    gap: 25px; /* Spacing between the icons */
    justify-content: center;
    align-items: center; /* Crucial for vertical alignment */
}

/* Define the uniform size for icons (smaller now) */
.social-icon {
    width: 26px;  /* Setting the width forces them to size evenly */
    height: auto; /* Maintains aspect ratio */
    color: var(--light-grey); /* Set to light grey default */
    transition: transform 0.2s, color 0.2s;
}

/* Hover effects */
.social-icon:hover {
    color: #ffffff; /* Turns white on hover for high contrast */
    transform: scale(1.08); /* Minimal scale increase */
}

/* Important: Overrides the global 'a' link style from previous steps */
.social-links-container a {
    border: none !important;
    line-height: 0; /* Helps with perfect alignment */
}

/* Desktop default: Hide the toggle button */
#menu-toggle {
    display: none;
}

/* Mobile Takeover (Screens 600px and smaller) */
/* Prevent scrolling when menu is open */
body.no-scroll {
    overflow: hidden;
    height: 100vh;
}

@media (max-width: 600px) {
    
    /* 1. The Header: Stacked and Solid */
    header {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        display: flex;
        flex-direction: column; /* Stacks H1 and Button vertically */
        align-items: center;
        padding: 15px 0;
        background-color: #000000; /* Solid mask for links scrolling behind */
        z-index: 2000; /* Highest priority */
        box-sizing: border-box;
    }

    h1 {
        font-size: 2rem !important;
        margin-bottom: 10px !important;
    }

    /* 2. Smaller Toggle Button */
    #menu-toggle {
        display: block;
        background-color: transparent;
        color: #ffffff;
        font-family: var(--body-font);
        font-weight: bold;
        font-size: 1.2rem;
        text-transform: uppercase;
        border: 2px solid #ffffff;
        padding: 4px 10px; /* Tighter button size */
        cursor: pointer;
        z-index: 2001; 
    }

    /* 3. The Nav Overlay */
    nav {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background-color: #000000;
        flex-direction: column;
        justify-content: flex-start;
        
        /* HUGE Safety Buffer: 
           Pushes links down far enough to clear the stacked H1 + Button 
        */
        padding-top: 180px; 
        
        align-items: center;
        gap: 18px; /* Tighter spacing between links */
        z-index: 1000; /* Sits below the header block */
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    nav.open {
        display: flex;
    }

    /* Smaller Nav Links */
    nav a {
        font-family: var(--header-font);
        font-size: 1.6rem; /* Scaled down for a cleaner look */
        color: var(--accent-color);
        text-decoration: none;
        text-transform: uppercase;
    }

    /* 4. Offset the Main Content */
    /* Since the header is fixed at the top, we push the page content down */
    main {
        margin-top: 140px; 
    }

    .footer {
        margin-top: 20px;
    }
    body {
        padding-bottom: 20px ;
        margin-bottom: 20px ;
    }
}


/* Releases Page Styles */

.releases-grid {
    display: grid;
    /* This automatically figures out how many 250px columns can fit! */
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 40px 30px;
    margin-top: 30px;
}

.release-card {
    display: flex;
    flex-direction: column;
}

/* A temporary block in case you don't have images ready yet */
.artwork-placeholder {
    width: 100%;
    aspect-ratio: 1 / 1; /* Forces it to be a perfect square */
    background-color: #1a1a1a;
    border: 1px solid #333;
    display: flex;
    justify-content: center;
    align-items: center;
    color: #555;
    font-family: var(--body-font);
    font-weight: 500;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.artwork-img { width: 100%; height: auto; margin-bottom: 15px; }

.release-card h3 {
    font-family: var(--body-font);
    font-size: 1.2rem;
    margin: 0 0 5px 0;
    color: #ffffff;
}

.release-meta {
    font-size: 0.95rem;
    color: var(--secondary-text);
    margin: 0 0 10px 0;
}

.bc-link {
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--accent-color);
    text-decoration: none;
    align-self: flex-start; /* Keeps the underline spanning only the text */
}

.bc-link:hover {
    text-decoration: underline;
}

/* Releases Mobile Refinement */
@media (max-width: 600px) {
    
    .releases-grid {
        display: flex;
        flex-direction: column;
        align-items: center; /* Centers the individual release items */
        width: 100%;
    }

    .release-card {
        width: 90%; /* Keeps it from hitting the very edges of the screen */
        max-width: 340px; /* Matches the width of your shows list for consistency */
        margin-bottom: 40px;
        text-align: left; /* Keeps the text edges sharp and industrial */
    }

    .release-meta {
        font-size: 0.95rem;
        margin-bottom: 15px;
        color: var(--secondary-text);
    }

    /* Make sure the Bandcamp embed or link scales properly */
    .bc-link {
        display: inline-block;
        width: 100%; 
    }
}

/* Contact Page Styles */

.contact-main {
    text-align: center;
}

.contact-grid {
    display: flex;
    flex-direction: column;
    gap: 30px;
    margin: 20px auto;
    max-width: 400px; /* Keeps the text block tight and readable */
}

.contact-item h3 {
    font-family: var(--body-font);
    font-size: 1.1rem;
    text-transform: uppercase;
    color: var(--light-grey);
    letter-spacing: 1px;
    margin-bottom: 5px;
    margin-top: 0px;
}

.contact-item a {
    font-size: 1.3rem;
    font-weight: 500;
    color: #ffffff;
    border-bottom: 1px solid var(--accent-color);
}

.contact-item a:hover {
    color: var(--accent-color);
    border-bottom: 1px solid var(--accent-color);
    text-decoration: none;
}

/* Gallery Section */
.gallery-section {
    margin-bottom: 50px;
}


/* The Grid Container */
.gallery-grid {
    display: grid;
    /* This automatically figures out how many 200px columns fit on the screen */
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 15px;
    margin-top: 25px;
}

/* Individual Grid Items */
.gallery-item {
    background-color: #111;
    overflow: hidden;
    border: 1px solid #222;
}

/* The Images inside the grid */
.gallery-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    aspect-ratio: 1 / 1; /* Makes every photo a perfect square */
    display: block;
    filter: grayscale(100%); /* High contrast B&W by default */
    transition: filter 0.15s ease-in-out, transform 0.15s ease-in-out;
}

/* Hover Effects */
.gallery-item:hover .gallery-img {
    filter: grayscale(0%); /* Snaps to color */
    transform: scale(1.05); /* Slight zoom effect */
}

.gallery-item:hover {
    border-color: var(--accent-color); /* Yellow border on hover */
    outline: 2px solid var(--accent-color);
}

/* Lightbox Modal Overlay */
.lightbox {
    display: none; 
    position: fixed;
    z-index: 1000; 
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.9); 
    justify-content: center;
    align-items: center;
}

.lightbox.active {
    display: flex;
}

/* Tight wrapper around image and close button */
.lightbox-content {
    position: relative; /* Acts as the anchor for the absolute close button */
    display: inline-block; /* Makes the box shrink to fit the image dimensions */
    max-width: 85%;
    max-height: 80%;
}

/* The Expanded Image */
.lightbox img {
    max-width: 100%;
    max-height: 80vh; /* Keeps it from expanding too tall on vertical screens */
    border: 3px solid var(--accent-color); 
    box-shadow: 0 0 20px rgba(0,0,0,0.8);
    display: block; /* Removes small gap at bottom of image */
}

/* Close Button (X) */
.close-btn {
    position: absolute;
    top: -40px; /* Sits exactly 40px above the top of the photo */
    right: 0; /* Aligns perfectly with the right edge of the photo */
    color: #ffffff;
    font-size: 2.2rem;
    font-family: var(--body-font); 
    cursor: pointer;
    line-height: 1;
    transition: color 0.15s ease;
}

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

/* Shows Page Styles */

.shows-intro {
    text-align: center;
    color: var(--secondary-text);
    margin-bottom: 40px;
    font-style: italic;
}

.year-section {
    margin-bottom: 60px;
}

.year-header {
    font-family: var(--header-font);
    /*font-size: 2rem;*/
    /*color: var(--accent-color);*/
    border-bottom: 2px solid #222;
    padding-bottom: 10px;
    margin-bottom: 20px;
}

.shows-list {
    display: flex;
    flex-direction: column;
}

.show-item {
    display: grid;
    grid-template-columns: 100px 1fr;
    gap: 20px;
    padding: 15px 0;
    border-bottom: 1px solid #111;
    align-items: center;
}

.show-item:hover {
    background-color: #050505;
}

.show-date {
    font-family: var(--body-font);
    font-weight: 500;
    color: var(--accent-color);
    text-transform: uppercase;
    font-size: 1.1rem;
}

/* The details container becomes a grid of its own */
.show-details {
    display: grid;
    /* Splits the space: Venue gets 1.2 parts, Location gets 1 part, Lineup gets 2 parts */
    grid-template-columns: 1.2fr 1fr 2fr; 
    gap: 20px;
    align-items: start; /* Keeps the top edge of all text perfectly leveled */
}

.show-venue {
    color: #ffffff;
    font-weight: 500;
}

.show-location {
    color: var(--secondary-text);
}

.show-lineup {
    color: #666;
    font-size: 0.95rem;
    font-style: italic;
    margin-left: 0; /* Resets the auto-margin we used for flexbox */
}

/* Mobile adjustments for shows */
@media (max-width: 600px) {
    .year-header {
        text-align: center; /* Ensures the year is dead center */
    }

    .shows-list {
        max-width: 340px; /* Locks the list to a consistent width */
        width: 100%; /* Allows it to scale down on ultra-small screens */
        margin: 0 auto; /* Centers the whole list block on the page */
    }

    .show-item {
        grid-template-columns: 1fr; /* Stacks date above everything else */
        gap: 5px;
        padding: 15px 0;
        text-align: left; /* Keeps text left-aligned inside the centered block */
    }

    /* Reverts back to a clean, stacked column on small screens */
    .show-details {
        display: flex;
        flex-direction: column;
        gap: 3px;
    }

    .show-lineup {
        margin-top: 5px;
    }

    .download-container {
    display: flex;
    flex-direction: column;
    align-items: center;
}

}

/* Merch Page Styles */
.merch-main {
    text-align: center;
    margin-bottom: 60px;
}

.merch-main p {
    color: var(--secondary-text);
    margin-bottom: 40px;
    font-style: italic;
}

.merch-link-container {
    display: flex;
    justify-content: center;
    margin-top: 30px;
}

/* The Big Brutal Button */
.brutal-button {
    display: inline-block;
    font-family: var(--body-font);
    font-size: 1.15rem;
    font-weight: bold;
    text-transform: uppercase;
    text-decoration: none;
    background-color: var(--accent-color);
    color: #000000;
    padding: 10px 20px;
    border: 3px solid #000000;
    box-shadow: 6px 6px 0px #ffffff;
    transition: all 0.1s ease-in-out;
}

.brutal-button:hover {
    background-color: #ffffff;
    box-shadow: 2px 2px 0px var(--accent-color);
    transform: translate(4px, 4px); /* Physically presses the button down */
    color: #000000;
    text-decoration: none;
}

/* Merch Page Pro-Centering */
@media (max-width: 600px) {
    /* 1. The Body: Ensure it fills the screen to push footer down */
    body {
        display: flex;
        flex-direction: column;
        min-height: 100vh;
        margin: 0;
    }

    /* 2. The Main Container: Acts as the vertical wrapper */
    .merch-main {
        flex-grow: 1; /* Fills all space between header and footer */
        display: flex;
        flex-direction: column;
        padding-top: 40px; /* Offset for the fixed header */
        padding-bottom: 20px;
        box-sizing: border-box;
    }

    /* 3. The Title: Stays at the top of the .merch-main area */
    .merch-main h2 {
        text-align: center;
        margin: 0 0 10px 0; /* Keeps it near the top */
    }

    /* 4. The Button Container: This is the magic "centering" box */
    .merch-link-container {
        flex-grow: 1;    /* Takes up ALL remaining space below the h2 */
        display: flex;
        align-items: center;    /* Vertically centers the button in that space */
        justify-content: center; /* Horizontally centers the button */
        margin-top: 0;
    }

    /* 5. The Footer: Pinned to the very bottom */
    .footer {
        margin-top: auto; 
        padding: 20px 0;
        background-color: #000;
        z-index: 3000;
    }

    .brutal-button {
        width: 90%;
        max-width: 280px;
        text-align: center;
    }
}


/* Extra small phones (iPhone SE size) */
@media (max-width: 360px) {
    nav {
        /* Drops to 2 columns if the screen is tiny so text doesn't overlap */
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Mobile Lightbox Adjustments */
@media (max-width: 600px) {
    .lightbox-content {
        max-width: 92%; /* Maximize screen real estate on narrow screens */
    }

    .lightbox img {
        max-height: 75vh; /* Prevents super-tall images from blowing out the screen */
    }

    .close-btn {
        top: 10px; /* Pulls it inside the top right corner of the image container */
        right: 10px;
        font-size: 1.8rem;
        background-color: var(--accent-color); /* Brutal yellow block */
        color: #000000;
        width: 40px;
        height: 40px;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 2px solid #000000;
        box-shadow: 3px 3px 0px #000000; /* Flat brutalist shadow */
    }
    
    .close-btn:hover {
        background-color: #ffffff;
        color: #000000;
    }
}