/* ============================================================================
   BlinkNBuild Hardware Academy - Design Tokens
   ----------------------------------------------------------------------------
   Aliases the blueprint's academy token names onto the live BlinkNBuild brand
   scale (see /style.css) so the Academy and the main site stay one system.
   Load order on every academy page:
     1. academy-theme.css   (tokens + base typography)
     2. academy-layout.css  (3-column grid + ad sanctuary)
     3. code-syntax.css     (code blocks)
   ========================================================================== */

:root {
  /* --- Brand primitives (mirrored from the main site design system) ------- */
  --cyan-100: #BAF5FD; --cyan-200: #7EEEF9; --cyan-300: #3DDFF2;
  --cyan-400: #00D4F5; --cyan-500: #00ABD1; --cyan-600: #007EA8;
  --cyan-800: #003550; --cyan-900: #001A2A;

  --gold-100: #FDEFBC; --gold-200: #FBDB76; --gold-300: #F8C43E;
  --gold-400: #F5A623; --gold-500: #D68A10; --gold-800: #4C2F02;

  --violet-200: #BBA8F2; --violet-300: #9B7FE8; --violet-400: #6B35C8;
  --violet-800: #1F0A44;

  --red-200: #F5918B; --red-300: #EC5E56; --red-400: #D94438; --red-800: #42110D;

  --neutral-0:   #080D1A; --neutral-50: #101828; --neutral-100: #141E30;
  --neutral-200: #1A2540; --neutral-300: #212F4A; --neutral-400: #2D3E5C;
  --neutral-500: #4A6180; --neutral-600: #6E8AAA; --neutral-700: #8FA3BF;
  --neutral-800: #B8CBDF; --neutral-900: #E8EEF8; --neutral-1000: #FFFFFF;

  /* --- Background layers (blueprint names -> brand values) ---------------- */
  --bg-space:    #0A0E1A;             /* deep canvas, matches --bg-base */
  --bg-surface:  var(--neutral-100);  /* sidebar + card surface */
  --bg-card:     var(--neutral-200);  /* interactive containers */
  --bg-code:     #0B1120;             /* code block background */
  --bg-elevated: var(--neutral-300);

  /* --- Borders ------------------------------------------------------------ */
  --border-cyan:   rgba(0, 212, 245, 0.22);
  --border-subtle: rgba(255, 255, 255, 0.06);
  --border-soft:   rgba(255, 255, 255, 0.12);
  --border-mid:    rgba(255, 255, 255, 0.22);

  /* --- Typography --------------------------------------------------------- */
  --font-heading:    "Orbitron", sans-serif;
  --font-subheading: "Exo 2", sans-serif;
  --font-body:       "DM Sans", sans-serif;
  --font-code:       "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;

  /* --- Accent palette (blueprint aliases) --------------------------------- */
  --cyan:    var(--cyan-400);   /* primary brand accent */
  --gold:    var(--gold-400);   /* attention & callouts */
  --emerald: #00E676;           /* success & passing timing */
  --crimson: #FF5252;           /* warnings & timing violations */
  --purple:  var(--violet-300); /* SystemVerilog badges */

  --text-primary:   var(--neutral-1000);
  --text-secondary: var(--neutral-800);
  --text-tertiary:  var(--neutral-600);
  --text-faint:     var(--neutral-500);

  /* --- Layout spacing ----------------------------------------------------- */
  --sidebar-w:     280px;
  --ad-rail-w:     300px;
  --content-max-w: 860px;
  --navbar-h:      64px;

  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px;
  --sp-5: 20px; --sp-6: 24px; --sp-7: 32px; --sp-8: 40px;
  --sp-9: 48px; --sp-10: 64px; --sp-11: 80px; --sp-12: 96px;

  --r-sm: 6px; --r-md: 10px; --r-lg: 16px; --r-xl: 24px; --r-full: 9999px;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-fast: 120ms; --dur-base: 200ms; --dur-slow: 350ms;
}

/* ============================ Reset & base ============================== */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--navbar-h) + 16px);
  -webkit-text-size-adjust: 100%;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

body {
  background-color: var(--bg-space);
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.75;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

/* Subtle cyber grid, matching the main site's ambience */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    linear-gradient(rgba(0, 212, 245, 0.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 212, 245, 0.028) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 40%, transparent 100%);
  mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 40%, transparent 100%);
}

img, svg { max-width: 100%; height: auto; display: block; }

a { color: var(--cyan-400); text-decoration: none; transition: color var(--dur-base) var(--ease-out); }
a:hover { color: var(--cyan-200); }

:focus-visible {
  outline: 2px solid var(--cyan-400);
  outline-offset: 3px;
  border-radius: 3px;
}

/* ============================ Typography ================================ */

h1, h2, h3, h4, h5 {
  color: var(--text-primary);
  font-family: var(--font-heading);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.01em;
  scroll-margin-top: calc(var(--navbar-h) + 20px);
}

h1 { font-size: clamp(28px, 4vw, 40px); margin-bottom: var(--sp-4); }

h2 {
  font-size: clamp(22px, 3vw, 28px);
  margin: var(--sp-10) 0 var(--sp-4);
  padding-bottom: var(--sp-3);
  border-bottom: 1px solid var(--border-subtle);
}

h3 {
  font-family: var(--font-subheading);
  font-size: clamp(18px, 2.2vw, 21px);
  font-weight: 700;
  margin: var(--sp-8) 0 var(--sp-3);
  color: var(--cyan-200);
}

h4 {
  font-family: var(--font-subheading);
  font-size: 16.5px;
  font-weight: 600;
  margin: var(--sp-6) 0 var(--sp-2);
  color: var(--text-primary);
}

p { margin-bottom: var(--sp-4); }
strong { color: var(--text-primary); font-weight: 600; }
em { color: var(--cyan-100); font-style: italic; }

ul, ol { margin: 0 0 var(--sp-4) var(--sp-6); }
li { margin-bottom: var(--sp-2); }
li::marker { color: var(--cyan-500); }

hr {
  border: 0;
  height: 1px;
  background: var(--border-subtle);
  margin: var(--sp-8) 0;
}

/* Inline code */
code:not([class*="language"]) {
  font-family: var(--font-code);
  font-size: 0.86em;
  background: rgba(0, 212, 245, 0.08);
  border: 1px solid var(--border-cyan);
  color: var(--cyan-200);
  padding: 2px 6px;
  border-radius: var(--r-sm);
  word-break: break-word;
}

/* Inline math-ish variables */
var {
  font-family: var(--font-code);
  font-style: italic;
  color: var(--gold-200);
}

/* ============================ Shared components ========================= */

.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-code);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: var(--r-full);
  white-space: nowrap;
}

.badge-cyan    { background: rgba(0, 212, 245, 0.12);  color: var(--cyan-300);    border: 1px solid var(--border-cyan); }
.badge-gold    { background: rgba(245, 166, 35, 0.12); color: var(--gold-300);    border: 1px solid rgba(245, 166, 35, 0.28); }
.badge-purple  { background: rgba(155, 127, 232, 0.14);color: var(--violet-200);  border: 1px solid rgba(155, 127, 232, 0.30); }
.badge-emerald { background: rgba(0, 230, 118, 0.12);  color: var(--emerald);     border: 1px solid rgba(0, 230, 118, 0.28); }
.badge-crimson { background: rgba(255, 82, 82, 0.12);  color: var(--crimson);     border: 1px solid rgba(255, 82, 82, 0.28); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--font-subheading);
  font-size: 14px;
  font-weight: 600;
  padding: 10px 20px;
  border: 1px solid transparent;
  border-radius: var(--r-md);
  cursor: pointer;
  transition: all var(--dur-base) var(--ease-out);
}

.btn-primary { background: var(--cyan-400); color: var(--neutral-0); }
.btn-primary:hover {
  background: var(--cyan-300);
  color: var(--neutral-0);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 212, 245, 0.25);
}

.btn-ghost { background: transparent; border-color: var(--border-soft); color: var(--text-secondary); }
.btn-ghost:hover {
  border-color: var(--border-cyan);
  color: var(--cyan-300);
  background: rgba(0, 212, 245, 0.05);
}

/* --- Callout boxes ------------------------------------------------------ */

.callout {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: var(--sp-3);
  margin: var(--sp-6) 0;
  padding: var(--sp-4) var(--sp-5);
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-left: 3px solid var(--cyan-400);
  border-radius: var(--r-md);
  font-size: 15px;
}

.callout p:last-child { margin-bottom: 0; }
.callout .callout-icon { font-size: 17px; line-height: 1.6; color: var(--cyan-400); }
.callout .callout-title {
  font-family: var(--font-subheading);
  font-weight: 700;
  color: var(--text-primary);
  display: block;
  margin-bottom: 2px;
}

.callout-warn    { border-left-color: var(--crimson); }
.callout-warn .callout-icon { color: var(--crimson); }
.callout-gold    { border-left-color: var(--gold-400); }
.callout-gold .callout-icon { color: var(--gold-400); }
.callout-success { border-left-color: var(--emerald); }
.callout-success .callout-icon { color: var(--emerald); }
.callout-purple  { border-left-color: var(--violet-300); }
.callout-purple .callout-icon { color: var(--violet-300); }

/* --- Tables ------------------------------------------------------------- */

.table-wrap {
  overflow-x: auto;
  margin: var(--sp-6) 0;
  border: 1px solid var(--border-subtle);
  border-radius: var(--r-md);
  background: var(--bg-surface);
  -webkit-overflow-scrolling: touch;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  line-height: 1.55;
  color: var(--text-secondary);
  min-width: 540px;
}

thead th {
  background: var(--bg-card);
  font-family: var(--font-subheading);
  font-weight: 700;
  font-size: 13.5px;
  letter-spacing: 0.02em;
  color: var(--cyan-200);
  text-align: left;
  padding: 12px 18px;
  border-bottom: 1px solid var(--border-cyan);
  white-space: nowrap;
  line-height: 1.4;
}

tbody td {
  padding: 12px 18px;
  border-bottom: 1px solid var(--border-subtle);
  vertical-align: top;
  line-height: 1.55;
  word-break: normal;
  overflow-wrap: break-word;
}

tbody td code {
  white-space: nowrap;
  font-size: 12.5px;
  line-height: 1.3;
  display: inline-block;
  vertical-align: baseline;
}

tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: rgba(0, 212, 245, 0.03); }

/* --- Figures / SVG diagrams --------------------------------------------- */

figure {
  margin: var(--sp-7) 0;
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--r-lg);
  padding: var(--sp-5);
  overflow-x: auto;
}

figure svg { margin: 0 auto; min-width: 480px; }

figcaption {
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--border-subtle);
  font-family: var(--font-subheading);
  font-size: 13px;
  color: var(--text-tertiary);
  text-align: center;
}

figcaption strong { color: var(--cyan-300); }

/* --- Reveal accordions (interview grilling / drills) -------------------- */

.reveal-box {
  margin: var(--sp-5) 0;
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: var(--r-md);
  overflow: hidden;
}

.reveal-box > summary {
  cursor: pointer;
  list-style: none;
  padding: var(--sp-4) var(--sp-5);
  font-family: var(--font-subheading);
  font-weight: 600;
  font-size: 15px;
  color: var(--gold-300);
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  transition: background var(--dur-base) var(--ease-out);
}

.reveal-box > summary::-webkit-details-marker { display: none; }
.reveal-box > summary:hover { background: rgba(245, 166, 35, 0.06); }

.reveal-box > summary::after {
  content: "\f078"; /* chevron-down */
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 11px;
  margin-left: auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out);
}

.reveal-box[open] > summary::after { transform: rotate(180deg); }
.reveal-box[open] > summary { border-bottom: 1px solid var(--border-subtle); }

.reveal-body { padding: var(--sp-5); font-size: 15px; }
.reveal-body > :last-child { margin-bottom: 0; }

/* --- Formula display ---------------------------------------------------- */

.formula {
  margin: var(--sp-5) 0;
  padding: var(--sp-5);
  background: var(--bg-code);
  border: 1px solid var(--border-cyan);
  border-radius: var(--r-md);
  font-family: var(--font-code);
  font-size: 15px;
  color: var(--cyan-100);
  text-align: center;
  overflow-x: auto;
  line-height: 2;
}

.formula .fx-label {
  display: block;
  font-family: var(--font-subheading);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-faint);
  margin-bottom: var(--sp-2);
}

/* --- Utility ------------------------------------------------------------ */

.visually-hidden {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.text-cyan    { color: var(--cyan-400); }
.text-gold    { color: var(--gold-400); }
.text-emerald { color: var(--emerald); }
.text-crimson { color: var(--crimson); }
.text-purple  { color: var(--violet-300); }
.mono         { font-family: var(--font-code); }
