/* ─────────────────────────────────────────
   Tokens
───────────────────────────────────────── */
:root {
  --color-bg:      #ffffff;
  --color-text:    #111111;
  --color-muted:   #555555;
  --color-accent:  #0057FF;
  --color-rule:    #111111;

  --font:          'JetBrains Mono', 'Courier New', monospace;

  --size-xs:       0.75rem;   /* 12px */
  --size-sm:       0.875rem;  /* 14px */
  --size-base:     1rem;      /* 16px */
  --size-lg:       1.25rem;   /* 20px */
  --size-xl:       1.5rem;    /* 24px */
  --size-2xl:      2rem;      /* 32px */
  --size-hero:     clamp(3rem, 9vw, 7.5rem);

  --space-xs:      0.5rem;
  --space-sm:      1rem;
  --space-md:      2rem;
  --space-lg:      4rem;
  --space-xl:      8rem;

  --max-width:     1100px;
  --gutter:        clamp(1.5rem, 5vw, 4rem);
}

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

/* ─────────────────────────────────────────
   Base
───────────────────────────────────────── */
html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}

body {
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font);
  font-size: var(--size-base);
  line-height: 1.6;
}

/* ─────────────────────────────────────────
   Layout
───────────────────────────────────────── */
.container {
  max-width: var(--max-width);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* ─────────────────────────────────────────
   Header
───────────────────────────────────────── */
header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 10;
  background: var(--color-bg);
  padding-block: var(--space-md);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-100%);
  transition: opacity 0.4s ease, transform 0.4s ease;
}

header.header-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

.wordmark-full {
  font-size: var(--size-sm);
  font-weight: 400;
  letter-spacing: 0.08em;
  color: var(--color-muted);
}

.wordmark-full .initial {
  font-weight: 600;
  color: var(--color-text);
}

/* ─────────────────────────────────────────
   Rules
───────────────────────────────────────── */
hr {
  border: none;
  margin-block: var(--space-md);
  height: auto;
  overflow: hidden;
}

hr::before {
  content: '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------';
  display: block;
  font-family: var(--font);
  font-size: var(--size-xs);
  color: var(--color-muted);
  white-space: nowrap;
  overflow: hidden;
  width: 100%;
  letter-spacing: 0;
}

hr.project-divider {
  margin-block: var(--space-lg);
}

hr.project-divider::before {
  content: '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -';
}

/* ─────────────────────────────────────────
   Hero
───────────────────────────────────────── */
#hero {
  padding-block: var(--space-md) var(--space-xl);
}

.hero-grid {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-xl);
  align-items: center;
}

.osd-logo {
  font-family: var(--font);
  font-size: clamp(1.5rem, 3vw, 2.5rem);
  line-height: 1.5;
  color: var(--color-text);
  white-space: pre;
  user-select: none;
}

.hero-wordmark {
  font-size: var(--size-base);
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--color-text);
  margin-bottom: var(--space-sm);
}

.hero-wordmark .initial {
  color: var(--color-accent);
}

#hero h1 {
  font-size: var(--size-base);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: 0;
  max-width: 60ch;
  margin-bottom: var(--space-sm);
}

.body-text {
  font-size: var(--size-base);
  line-height: 1.65;
  color: var(--color-text);
  max-width: 60ch;
}

/* ─────────────────────────────────────────
   Selected Work
───────────────────────────────────────── */
#work {
  padding-block: var(--space-lg) var(--space-xl);
}

#work h2 {
  font-size: var(--size-sm);
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-muted);
}

#work h2::before {
  content: '// ';
  font-weight: 400;
  letter-spacing: 0;
  color: var(--color-accent);
}

.project {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: var(--space-md);
  align-items: start;
}

.project-meta {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.project-name {
  font-size: var(--size-base);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.6;
}

.project-name::before {
  content: '> ';
  font-weight: 400;
  color: var(--color-accent);
  letter-spacing: 0;
}

.project-platform {
  font-size: var(--size-xs);
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-accent);
}

.project-description {
  font-size: var(--size-base);
  line-height: 1.65;
  color: var(--color-text);
  max-width: 60ch;
  padding-top: 0;
}

/* ─────────────────────────────────────────
   How to Help
───────────────────────────────────────── */
#help {
  padding-block: var(--space-lg) var(--space-xl);
}

#help h2 {
  font-size: var(--size-sm);
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-muted);
}

#help h2::before {
  content: '// ';
  font-weight: 400;
  letter-spacing: 0;
  color: var(--color-accent);
}

.help-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md);
}

.help-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.help-label {
  font-size: var(--size-xs);
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-accent);
}

.help-label::before { content: '[ '; font-weight: 400; letter-spacing: 0; }
.help-label::after  { content: ' ]'; font-weight: 400; letter-spacing: 0; }

.help-description {
  font-size: var(--size-base);
  line-height: 1.6;
  color: var(--color-muted);
}



.help-link {
  font-size: var(--size-base);
  font-weight: 600;
  color: var(--color-text);
  text-decoration: none;
  border-bottom: 1px solid var(--color-text);
  padding-bottom: 1px;
  transition: color 0.2s ease, border-color 0.2s ease;
  width: fit-content;
}

.help-link:hover {
  color: var(--color-accent);
  border-color: var(--color-accent);
}

/* ─────────────────────────────────────────
   Footer
───────────────────────────────────────── */
footer {
  padding-block: var(--space-md) var(--space-lg);
}

footer p {
  font-size: var(--size-xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-muted);
}

/* ─────────────────────────────────────────
   Scroll fade-in
───────────────────────────────────────── */
.fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ─────────────────────────────────────────
   Responsive
───────────────────────────────────────── */
@media (max-width: 640px) {
  .hero-grid {
    grid-template-columns: 1fr;
    gap: var(--space-md);
  }

  .project {
    grid-template-columns: 1fr;
    gap: var(--space-sm);
  }

  .help-grid {
    grid-template-columns: 1fr;
  }

  #hero {
    padding-block: var(--space-lg);
  }
}
