/* ============================================
   Presentation Site — Global Stylesheet
   Dark theme, bottom-left text layout
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Barlow:wght@300;400;500;600&display=swap');

/* ── CSS Variables ─────────────────────────── */
:root {
  --color-bg:       #0a0a0a;
  --color-accent:   #f5b800;
  --color-text:     #ffffff;
  --color-muted:    rgba(255, 255, 255, 0.55);

  --font-display:   'Bebas Neue', sans-serif;
  --font-body:      'Barlow', sans-serif;

  --slide-padding:  6vw;
  --h1-size:        clamp(3.5rem, 10vw, 9rem);
  --subheading-size: clamp(1rem, 2.2vw, 1.6rem);
}

/* ── Reset ─────────────────────────────────── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

/* ── Base ──────────────────────────────────── */
html, body {
  width: 100%;
  height: 100%;
  background-color: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-weight: 300;
  -webkit-font-smoothing: antialiased;
  overflow: hidden; /* full-screen slide feel */
}

/* ── Slide wrapper ─────────────────────────── */
/* Wrap each page/slide in a <main class="slide"> */
main.slide {
  position: relative;
  width: 100vw;
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;       /* push content to bottom */
  padding: var(--slide-padding);
  padding-bottom: calc(var(--slide-padding) + 3rem); /* clear nav links */
}

/* ── H1 ────────────────────────────────────── */
h1 {
  font-family: var(--font-display);
  font-size: var(--h1-size);
  color: var(--color-accent);
  line-height: 0.95;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  margin-bottom: -0.1em;
}

/* ── Subheading block ──────────────────────── */
/* Usage: <div class="slide-sub"><p>Today's text is…</p></div> */
.slide-sub {
  display: block;
}

.slide-sub p {
  font-family: var(--font-body);
  font-size: var(--subheading-size);
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.4;
  letter-spacing: 0.01em;
}

/* ── General body copy (for content slides) ── */
p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 1.8vw, 1.35rem);
  font-weight: 300;
  color: var(--color-text);
  line-height: 1.65;
  max-width: 70ch;
  hyphens: auto;
  overflow-wrap: break-word;
  text-align: justify;
}

/* ── H2 (section headings on content slides) ─ */
h2 {
  font-family: var(--font-display);
  font-size: clamp(2rem, 6vw, 5rem);
  color: var(--color-accent);
  line-height: 1;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  margin-bottom: 0.5em;
}

/* ── H3 ────────────────────────────────────── */
h3 {
  font-family: var(--font-body);
  font-size: clamp(1.1rem, 2.5vw, 1.8rem);
  font-weight: 500;
  color: var(--color-text);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-bottom: 0.4em;
}

/* ── Slide variant: top-aligned content ─────── */
/* Wrap column content in <div class="slide--top"> inside main.slide */
.slide--top {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
}

/* ── Two-column layout ──────────────────────── */
/*
  Usage:
  <div class="slide-columns">
    <div class="slide-col">…col 1 content…</div>
    <div class="slide-col">…col 2 content…</div>
  </div>
*/
.slide-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4vw;
  width: 100%;
}

/* Reset max-width on p inside columns so text fills the column */
.slide-col p {
  max-width: none;

  /*
   * FLUID COLUMN TYPOGRAPHY — how to fine-tune character count
   *
   * Each column is approximately 42vw wide, calculated as:
   *   (100vw - 2 × --slide-padding[6vw] - gap[4vw]) ÷ 2  =  42vw
   *
   * To hit a target T characters per line with Barlow (a proportional font
   * whose average glyph is ~0.48em wide):
   *
   *   font-size = 42vw ÷ T ÷ 0.48
   *
   * At T = 65 chars  →  42 ÷ 65 ÷ 0.48  ≈  1.35vw   (current value)
   * At T = 60 chars  →  42 ÷ 60 ÷ 0.48  ≈  1.46vw   (fewer, larger)
   * At T = 70 chars  →  42 ÷ 70 ÷ 0.48  ≈  1.25vw   (more, smaller)
   *
   * Increase the vw value for larger text / fewer chars per line.
   * Decrease it for smaller text / more chars per line.
   * The max(1rem, …) floor keeps text readable on mobile.
   */
  font-size: max(1rem, 1.35vw);
}

/* ── List styles (for bullet/dash lists in columns) ── */
.slide-col ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75em;
}

.slide-col ul li {
  font-family: var(--font-body);
  font-size: clamp(0.95rem, 1.6vw, 1.25rem);
  font-weight: 300;
  color: var(--color-text);
  line-height: 1.5;
  padding-left: 1.5em;
  position: relative;
}

.slide-col ul li::before {
  content: '–';
  position: absolute;
  left: 0;
  color: var(--color-accent);
}

/* ── Mobile: collapse to single column ─────── */
@media (max-width: 768px) {
  html, body {
    overflow: auto;
  }

  main.slide {
    height: auto;
    min-height: 100vh;
    padding-bottom: calc(var(--slide-padding) + 4rem);
  }

  .slide-columns {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
}

/* ── Slide navigation links ────────────────── */
/* Usage: <nav class="slide-nav">…</nav> inside main.slide */
.slide-nav {
  position: fixed;
  bottom: var(--slide-padding);
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  padding: 0 var(--slide-padding);
  pointer-events: none; /* let clicks pass through the gap */
}

.slide-nav a {
  pointer-events: all;
  font-family: var(--font-body);
  font-size: clamp(0.75rem, 1.2vw, 1rem);
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  color: #666666;
  transition: color 0.2s ease;
}

.slide-nav a:hover {
  color: #999999;
}

/* ── Accent / highlight utility ────────────── */
.accent {
  color: var(--color-accent);
}

.muted {
  color: var(--color-muted);
}
