/* ============================================
NIGHTDRIVE EPK — style.css
Palette: #000 bg | #00E5FF cyan | #7B2FBE violet
============================================ */
:root {
--cyan: #00E5FF;
--cyan-dim: #00AACC;
--violet: #7B2FBE;
--violet-glow: rgba(123, 47, 190, 0.4);
--violet-light: #A855F7;
--black: #000000;
--dark: #0A0A0F;
--dark2: #111118;
--dark3: #1A1A24;
--white: #FFFFFF;
--gray: #888899;
--gray-dim: #444455;
--font-display: 'Bebas Neue', sans-serif;
--font-body: 'Barlow', sans-serif;
--font-condensed: 'Barlow Condensed', sans-serif;
--nav-h: 70px;
}
/* RESET */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
background: var(--black);
color: var(--white);
font-family: var(--font-body);
font-size: 16px;
line-height: 1.6;
overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
img { max-width: 100%; display: block; }
/* SCANLINES */
.scanlines {
position: fixed;
inset: 0;
pointer-events: none;
z-index: 9999;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(0,0,0,0.07) 2px,
rgba(0,0,0,0.07) 4px
);
}
/* BUTTONS */
.btn-primary {
display: inline-block;
padding: 14px 36px;
background: var(--cyan);
color: var(--black);
font-family: var(--font-condensed);
font-weight: 700;
font-size: 15px;
letter-spacing: 0.15em;
border: 2px solid var(--cyan);
cursor: pointer;
transition: background 0.2s, color 0.2s, box-shadow 0.2s;
clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}
.btn-primary:hover {
background: transparent;
color: var(--cyan);
box-shadow: 0 0 20px rgba(0,229,255,0.4);
}
.btn-outline {
display: inline-block;
padding: 14px 36px;
background: transparent;
color: var(--white);
font-family: var(--font-condensed);
font-weight: 600;
font-size: 15px;
letter-spacing: 0.15em;
border: 1px solid var(--gray-dim);
cursor: pointer;
transition: border-color 0.2s, color 0.2s, box-shadow 0.2s;
}
.btn-outline:hover {
border-color: var(--violet-light);
color: var(--violet-light);
box-shadow: 0 0 16px rgba(123,47,190,0.3);
}
.btn-sm { padding: 9px 22px; font-size: 13px; }
/* ============ NAV ============ */
#mainNav {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 1000;
height: var(--nav-h);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 40px;
background: rgba(0,0,0,0.85);
backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(123,47,190,0.2);
transition: border-color 0.3s;
}
#mainNav.scrolled { border-bottom-color: rgba(0,229,255,0.2); }
.nav-logo img {
height: 44px;
width: auto;
object-fit: contain;
}
.nav-links {
display: flex;
gap: 40px;
}
.nav-links a {
font-family: var(--font-condensed);
font-weight: 600;
font-size: 13px;
letter-spacing: 0.2em;
color: var(--gray);
transition: color 0.2s;
position: relative;
}
.nav-links a::after {
content: '';
position: absolute;
bottom: -4px; left: 0; right: 0;
height: 1px;
background: var(--cyan);
transform: scaleX(0);
transition: transform 0.2s;
}
.nav-links a:hover { color: var(--white); }
.nav-links a:hover::after { transform: scaleX(1); }
.nav-toggle {
display: none;
background: none;
border: 1px solid var(--gray-dim);
color: var(--white);
padding: 6px 10px;
font-size: 18px;
cursor: pointer;
}

/* ============ HERO ============ */
#hero {
  position: relative;
  width: 100%;
  min-height: 60vh;
  background: url('https://nightdrivecle.com/images/header.jpg') center center / cover no-repeat;
  background-color: var(--black);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--nav-h) 20px 60px;
}
.hero-grid-overlay {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(123,47,190,0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(123,47,190,0.06) 1px, transparent 1px);
  background-size: 60px 60px;
  box-shadow: inset 0 0 0 1000px rgba(0,0,0,0.55);
}
.hero-content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  width: 100%;
  max-width: 700px;
  animation: heroFadeIn 1s ease both;
}
@keyframes heroFadeIn {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero-logo {
  width: min(380px, 75vw);
  margin: 0 auto 20px;
  filter: drop-shadow(0 0 40px rgba(123,47,190,0.8));
  animation: logoPulse 4s ease-in-out infinite alternate;
}
@keyframes logoPulse {
  from { filter: drop-shadow(0 0 30px rgba(123,47,190,0.6)); }
  to   { filter: drop-shadow(0 0 60px rgba(123,47,190,0.95)) drop-shadow(0 0 15px rgba(0,229,255,0.3)); }
}
.hero-tagline {
  font-family: var(--font-condensed);
  font-size: 13px;
  font-weight: 300;
  letter-spacing: 0.5em;
  color: var(--cyan);
  margin-bottom: 32px;
  opacity: 0.9;
}
.hero-cta {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

/* ============ SECTIONS ============ */
section {
position: relative;
padding: 100px 60px;
max-width: 1200px;
margin: 0 auto;
}
section + section { border-top: 1px solid rgba(123,47,190,0.15); }
.section-label {
position: absolute;
top: 40px;
right: 60px;
font-family: var(--font-condensed);
font-size: 11px;
letter-spacing: 0.3em;
color: var(--violet-light);
opacity: 0.4;
}
.section-title {
font-family: var(--font-display);
font-size: clamp(44px, 6vw, 80px);
line-height: 0.95;
letter-spacing: 0.03em;
color: var(--white);
margin-bottom: 48px;
}
.section-title.centered { text-align: center; }
.subsection-title {
font-family: var(--font-condensed);
font-size: 13px;
font-weight: 600;
letter-spacing: 0.35em;
color: var(--cyan);
margin-bottom: 24px;
}
/* ============ EPK ============ */
.epk-grid {
display: grid;
grid-template-columns: 3fr 2fr;
gap: 80px;
align-items: start;
}
.bio-text {
font-size: 17px;
font-weight: 300;
line-height: 1.8;
color: #CCCCDD;
margin-bottom: 40px;
}
.bio-text.iyl {
margin-top: -20px;
font-size: 14px;
color: var(--gray);
}
.iyl-label {
font-family: var(--font-condensed);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.35em;
color: var(--cyan);
display: block;
margin-bottom: 6px;
}
.epk-stats {
display: flex;
gap: 40px;
margin-bottom: 36px;
padding-bottom: 36px;
border-bottom: 1px solid var(--gray-dim);
}
.stat { display: flex; flex-direction: column; }
.stat-num {
font-family: var(--font-display);
font-size: 48px;
line-height: 1;
color: var(--cyan);
}
.stat-label {
font-family: var(--font-condensed);
font-size: 11px;
letter-spacing: 0.3em;
color: var(--gray);
margin-top: 4px;
}
.notable-list { display: flex; flex-direction: column; gap: 0; }
.notable-item {
display: flex;
flex-direction: column;
padding: 14px 0;
border-bottom: 1px solid rgba(255,255,255,0.06);
transition: background 0.2s;
cursor: default;
}
.notable-item:hover { padding-left: 8px; transition: padding-left 0.2s; }
.notable-date {
font-family: var(--font-condensed);
font-size: 11px;
letter-spacing: 0.3em;
color: var(--cyan);
font-weight: 600;
}
.notable-act {
font-family: var(--font-condensed);
font-size: 16px;
font-weight: 400;
color: var(--white);
margin-top: 2px;
}
/* ============ MUSIC ============ */
#music { max-width: 1200px; }
.music-grid {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 60px;
align-items: start;
}
.spotify-embed-wrap {
border: 1px solid rgba(123,47,190,0.3);
background: var(--dark2);
}
.spotify-embed-wrap iframe { display: block; }
.social-list { display: flex; flex-direction: column; gap: 8px; }
.social-link {
display: flex;
align-items: center;
gap: 14px;
padding: 14px 18px;
border: 1px solid var(--gray-dim);
font-family: var(--font-condensed);
font-size: 15px;
font-weight: 600;
letter-spacing: 0.1em;
color: var(--gray);
transition: border-color 0.2s, color 0.2s, background 0.2s;
}
.social-link:hover { color: var(--white); border-color: var(--cyan); background: rgba(0,229,255,0.04); }
.social-link svg { flex-shrink: 0; }
/* ============ SHOWS ============ */
.shows-container {
display: flex;
flex-direction: column;
gap: 16px;
max-width: 800px;
margin: 0 auto;
}
.show-card {
display: grid;
grid-template-columns: 100px 1fr auto;
align-items: center;
gap: 30px;
padding: 24px 32px;
border: 1px solid var(--gray-dim);
background: var(--dark2);
transition: border-color 0.2s, box-shadow 0.2s;
}
.show-card:hover {
border-color: var(--violet-light);
box-shadow: 0 0 20px rgba(123,47,190,0.2);
}
.show-card.upcoming { border-left: 3px solid var(--cyan); }
.show-date-block {
display: flex;
flex-direction: column;
align-items: center;
line-height: 1;
}
.show-month {
font-family: var(--font-condensed);
font-size: 12px;
font-weight: 600;
letter-spacing: 0.3em;
color: var(--cyan);
}
.show-day {
font-family: var(--font-display);
font-size: 44px;
color: var(--white);
line-height: 1;
}
.show-year {
font-family: var(--font-condensed);
font-size: 11px;
color: var(--gray);
letter-spacing: 0.15em;
}
.show-info { display: flex; flex-direction: column; gap: 4px; }
.show-venue {
font-family: var(--font-condensed);
font-size: 22px;
font-weight: 700;
color: var(--white);
letter-spacing: 0.05em;
}
.show-location {
font-family: var(--font-condensed);
font-size: 13px;
color: var(--gray);
letter-spacing: 0.1em;
}
.show-support {
font-family: var(--font-body);
font-size: 13px;
color: var(--violet-light);
font-style: italic;
}
.shows-note {
text-align: center;
margin-top: 32px;
font-size: 14px;
color: var(--gray);
}
.shows-note a { color: var(--cyan); border-bottom: 1px solid transparent; }
.shows-note a:hover { border-bottom-color: var(--cyan); }
/* ============ GALLERY ============ */
.gallery-filters {
display: flex;
gap: 12px;
justify-content: center;
flex-wrap: wrap;
margin-bottom: 40px;
}
.filter-btn {
background: none;
border: 1px solid var(--gray-dim);
color: var(--gray);
font-family: var(--font-condensed);
font-size: 12px;
font-weight: 600;
letter-spacing: 0.25em;
padding: 9px 20px;
cursor: pointer;
transition: all 0.2s;
}
.filter-btn:hover { border-color: var(--white); color: var(--white); }
.filter-btn.active { background: var(--cyan); border-color: var(--cyan); color: var(--black); }
.gallery-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 6px;
}
.gallery-item {
aspect-ratio: 1;
overflow: hidden;
cursor: pointer;
position: relative;
background: var(--dark3);
}
.gallery-item img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.4s ease;
display: block;
}
.gallery-item:hover img { transform: scale(1.06); }
.gallery-item.hidden { display: none; }
/* Placeholder tiles */
.gallery-item.placeholder .ph-inner {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: var(--dark3);
border: 1px dashed var(--gray-dim);
transition: border-color 0.2s;
}
.gallery-item.placeholder:hover .ph-inner { border-color: var(--violet-light); }
.ph-inner span {
font-family: var(--font-condensed);
font-size: 12px;
letter-spacing: 0.2em;
color: var(--gray-dim);
}
/* Lightbox */
.lightbox {
position: fixed;
inset: 0;
z-index: 2000;
background: rgba(0,0,0,0.95);
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s;
}
.lightbox.open { opacity: 1; pointer-events: all; }
.lb-img-wrap { max-width: 90vw; max-height: 85vh; }
.lb-img-wrap img { max-width: 90vw; max-height: 85vh; object-fit: contain; }
.lb-close, .lb-prev, .lb-next {
position: absolute;
background: none;
border: 1px solid var(--gray-dim);
color: var(--white);
cursor: pointer;
font-size: 24px;
padding: 10px 16px;
transition: border-color 0.2s, color 0.2s;
}
.lb-close:hover, .lb-prev:hover, .lb-next:hover { border-color: var(--cyan); color: var(--cyan); }
.lb-close { top: 24px; right: 24px; font-size: 28px; }
.lb-prev { left: 24px; top: 50%; transform: translateY(-50%); }
.lb-next { right: 24px; top: 50%; transform: translateY(-50%); }
/* ============ CONTACT ============ */
.contact-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
max-width: 900px;
margin: 0 auto;
}
.contact-card {
padding: 32px 28px;
border: 1px solid var(--gray-dim);
background: var(--dark2);
transition: border-color 0.2s;
}
.contact-card:hover { border-color: var(--violet-light); }
.contact-card h3 {
font-family: var(--font-condensed);
font-size: 13px;
font-weight: 700;
letter-spacing: 0.35em;
color: var(--cyan);
margin-bottom: 12px;
}
.contact-card p {
font-size: 14px;
color: var(--gray);
margin-bottom: 16px;
line-height: 1.6;
}
.contact-link {
font-family: var(--font-condensed);
font-size: 15px;
color: var(--white);
border-bottom: 1px solid var(--gray-dim);
padding-bottom: 2px;
transition: color 0.2s, border-color 0.2s;
}
.contact-link:hover { color: var(--cyan); border-color: var(--cyan); }
/* ============ FOOTER ============ */
#footer {
border-top: 1px solid rgba(123,47,190,0.25);
padding: 48px 60px;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 20px;
max-width: 100%;
}
.footer-logo { height: 48px; width: auto; object-fit: contain; }
.footer-copy {
font-size: 12px;
color: var(--gray-dim);
font-family: var(--font-condensed);
letter-spacing: 0.1em;
}
.footer-socials { display: flex; gap: 16px; }
.footer-socials a {
font-family: var(--font-condensed);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.2em;
color: var(--gray-dim);
padding: 6px 10px;
border: 1px solid var(--gray-dim);
transition: color 0.2s, border-color 0.2s;
}
.footer-socials a:hover { color: var(--cyan); border-color: var(--cyan); }
/* ============ RESPONSIVE ============ */
@media (max-width: 900px) {
section { padding: 80px 28px; }
#mainNav { padding: 0 24px; }
.nav-links { display: none; }
.nav-links.open {
display: flex;
flex-direction: column;
position: absolute;
top: var(--nav-h);
left: 0; right: 0;
background: rgba(0,0,0,0.97);
padding: 24px;
gap: 24px;
border-bottom: 1px solid var(--violet-glow);
}
.nav-toggle { display: block; }
.epk-grid { grid-template-columns: 1fr; gap: 48px; }
.music-grid { grid-template-columns: 1fr; gap: 40px; }
.contact-grid { grid-template-columns: 1fr; }
.show-card { grid-template-columns: 80px 1fr; }
.show-action { grid-column: 2; }
.section-label { display: none; }
#footer { flex-direction: column; text-align: center; align-items: center; }
}
@media (max-width: 600px) {
.gallery-grid { grid-template-columns: repeat(2, 1fr); }
.epk-stats { gap: 24px; }
.hero-cta { flex-direction: column; align-items: center; }
#hero { min-height: 50vh; padding-bottom: 40px; }
.hero-logo { width: min(280px, 80vw); }
.hero-tagline { font-size: 11px; letter-spacing: 0.3em; margin-bottom: 24px;}
}
