/* OD9 shared base — design tokens, reset, and the universal nav.
 * Loaded once (and cached across pages) so the nav + tokens live in ONE place
 * instead of being re-inlined on every page. Added 2026-06-05 (task #12).
 * Defines BOTH token conventions in use on the site (--b / --primary-blue),
 * so a page can drop its own :root + nav CSS and still resolve every var. */
:root{
  --primary-blue:#00BFFF; --electric-blue:#00A0FF; --neon-blue:#00D4FF;
  --chrome:#C0C0C0; --carbon:#0D0D0D; --carbon-dark:#1A1A1A;
  /* --nav-height = the FULL fixed-header stack (topbar 28px + nav 52px), NOT just
     the nav. The global body{padding-top} below clears it; pages don't re-set it. */
  --glow:0 0 20px rgba(0,191,255,.45); --nav-height:80px; --topbar-h:28px;
  /* short aliases used by most pages */
  --b:#00BFFF; --eb:#00A0FF; --c:#C0C0C0; --d:#0D0D0D; --dd:#1A1A1A;
  --g:0 0 20px rgba(0,191,255,.45); --gold:#FFD700; --rg:#B76E79;
}
*{margin:0;padding:0;box-sizing:border-box}

/* Single source of truth for the fixed-header offset. The nav is position:fixed,
 * so page content must start below it. Set ONCE here — pages no longer hand-roll
 * `body{padding-top}` (that drift is what let updates.php clip under the nav).
 * A page may still override with a LARGER value when it needs extra breathing room. */
body{padding-top:var(--nav-height)}

/* A11y: honor reduced-motion — neutralize the floating logo, pulses, transitions */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* Email signup popup (universal — rendered by includes/email-popup.php) */
.email-popup-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.8);z-index:99999;justify-content:center;align-items:center}
.email-popup-overlay.active{display:flex}
.email-popup{background:var(--carbon-dark);border:2px solid var(--primary-blue);border-radius:16px;padding:2.5rem;max-width:450px;width:90%;position:relative;box-shadow:var(--glow);animation:popIn 0.3s ease}
@keyframes popIn{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}
.email-popup-close{position:absolute;top:15px;right:15px;background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;transition:color 0.3s}
.email-popup-close:hover{color:var(--primary-blue)}
.email-popup h3{font-family:'Orbitron',sans-serif;font-size:1.5rem;color:#fff;text-align:center;margin-bottom:0.5rem}
.email-popup .tagline{text-align:center;color:var(--primary-blue);font-family:'Rajdhani',sans-serif;margin-bottom:1.5rem}
.email-popup p{text-align:center;color:#888;font-size:0.95rem;margin-bottom:1.5rem;line-height:1.6}
.email-signup-form{display:flex;flex-direction:column;gap:1rem}
.email-signup-form input{padding:0.75rem 1rem;background:var(--carbon);border:1px solid #444;border-radius:4px;color:#fff;font-family:'Exo 2',sans-serif;font-size:1rem}
.email-signup-form input:focus{outline:none;border-color:var(--primary-blue)}
.email-signup-form button{background:linear-gradient(135deg,var(--primary-blue),var(--electric-blue));color:var(--carbon);padding:0.8rem;border:none;border-radius:4px;font-family:'Rajdhani',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:2px;cursor:pointer;transition:all 0.3s}
.email-signup-form button:hover{box-shadow:var(--glow)}
.email-popup .privacy-note{text-align:center;color:#888;font-size:0.75rem;margin-top:1rem}

/* Universal nav — mirrors includes/nav.php markup.
 * UNIVERSAL MEANS UNIVERSAL: the topbar + nav + mobile menu and EVERY element
 * inside them render identically on every page. They must never inherit a
 * page-level text property (line-height especially — pages set body
 * line-height:1.7 for readable copy, which otherwise leaked into the nav and
 * made the Discord button taller/shifted on some pages). Pin the inheritable
 * text metrics here so no page can perturb the nav. */
.od9-topbar, .od9-topbar *, .od9-nav, .od9-nav *, .mobile-menu, .mobile-menu *{
  line-height:normal;
}
/* Pages style bare tags for their body copy (ul{padding-left}, li{margin},
 * a{text-decoration}). Those leak into the nav's <ul class="nav-menu">/<li>/<a>
 * and shifted the Discord button on some pages. Neutralize the box + link
 * defaults here so the nav is identical regardless of any page tag-rules; the
 * .nav-* rules below still own the intentional styling (higher specificity). */
.od9-topbar ul, .od9-topbar li, .od9-nav ul, .od9-nav li, .mobile-menu ul, .mobile-menu li{
  margin:0; padding:0; list-style:none;
}
.od9-topbar a, .od9-nav a, .mobile-menu a{ text-decoration:none; }
.od9-nav{position:fixed;top:var(--topbar-h);left:0;width:100%;height:calc(var(--nav-height) - var(--topbar-h));background:linear-gradient(180deg,rgba(13,13,13,.98),rgba(26,26,26,.95));backdrop-filter:blur(20px);border-bottom:2px solid var(--b);box-shadow:var(--g);z-index:9999}
.nav-container{max-width:1200px;margin:0 auto;padding:0 2rem;height:100%;display:flex;justify-content:space-between;align-items:center}
.nav-logo{display:flex;align-items:center;text-decoration:none}
.nav-logo img{height:36px;width:auto;margin-right:.6rem;filter:drop-shadow(var(--g))}
.nav-logo-text{font-family:'Orbitron',sans-serif;font-size:1.5rem;font-weight:700;color:var(--b);letter-spacing:3px;text-shadow:var(--g)}
.nav-menu{display:flex;list-style:none;gap:.8rem;align-items:center}
.nav-link{color:var(--c);text-decoration:none;font-family:'Rajdhani',sans-serif;font-size:1rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;transition:all .3s;padding:.5rem 0;position:relative}
.nav-link::after{content:'';position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--b);transition:all .3s;transform:translateX(-50%)}
.nav-link:hover,.nav-link.active{color:var(--b)}
.nav-link:hover::after,.nav-link.active::after{width:100%}
.nav-btn{background:linear-gradient(135deg,var(--b),var(--eb));color:var(--d);padding:.6rem 1.2rem;border-radius:4px;text-decoration:none;font-family:'Rajdhani',sans-serif;font-weight:700;font-size:.9rem;text-transform:uppercase;display:flex;align-items:center;gap:.5rem;box-shadow:var(--g);transition:all .3s}
.nav-btn:hover{transform:translateY(-2px)}
.mobile-toggle{display:none;background:none;border:none;cursor:pointer;padding:.5rem;z-index:10001}
.mobile-toggle span{display:block;width:25px;height:3px;background:var(--b);margin:5px 0;border-radius:2px;transition:all .3s}
.mobile-toggle.active span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}
.mobile-toggle.active span:nth-child(2){opacity:0}
.mobile-toggle.active span:nth-child(3){transform:rotate(-45deg) translate(7px,-6px)}
.mobile-menu{display:none;position:fixed;top:var(--nav-height);left:0;width:100%;background:linear-gradient(180deg,rgba(13,13,13,.98),rgba(26,26,26,.98));backdrop-filter:blur(20px);padding:1rem 0;border-bottom:2px solid var(--b);box-shadow:var(--g);z-index:9998}
.mobile-menu.active{display:block}
.mobile-menu a{display:block;color:var(--c);text-decoration:none;font-family:'Rajdhani',sans-serif;font-size:1.1rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;padding:1rem 2rem;transition:all .3s;border-bottom:1px solid #222}
.mobile-menu a:hover,.mobile-menu a.active{color:var(--b);background:rgba(0,191,255,.1)}
.mobile-menu .mobile-discord{background:linear-gradient(135deg,var(--b),var(--eb));color:var(--d);margin:1rem;border-radius:4px;text-align:center;border-bottom:none}
@media(max-width:900px){.nav-menu{display:none}.mobile-toggle{display:block}}
