:root {
  --bg:     #fafaf8;
  --panel:  #ffffff;
  --ink:    #1a1a1a;
  --ink2:   #3a3a3a;
  --ink3:   #6b6b6b;
  --ink4:   #a0a0a0;
  --rule:   #e8e8e4;
  --accent: oklch(55% 0.04 240);
  --ok:     oklch(55% 0.05 160);
  --warn:   oklch(60% 0.08 60);
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg:     #0f0f0e;
    --panel:  #171715;
    --ink:    #f2f1ed;
    --ink2:   #c5c4bf;
    --ink3:   #8a8983;
    --ink4:   #5a5954;
    --rule:   #26251f;
    --accent: oklch(72% 0.04 240);
    --ok:     oklch(72% 0.06 160);
    --warn:   oklch(75% 0.09 60);
  }
}

*, *::before, *::after { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
}

body {
  background: var(--bg);
  color: var(--ink);
  font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.55;
  padding: 48px 80px 100px;
}

.mono {
  font-family: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, monospace;
}

/* ── Nav ── */
header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--rule);
}

.logo {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.2px;
}

.logo-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
}

.logo-name { color: var(--ink); }
.logo-sub  { color: var(--ink4); }

nav {
  display: flex;
  gap: 28px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
}

nav a {
  color: var(--ink2);
  text-decoration: none;
}

nav a.accent { color: var(--accent); }
nav a:hover  { color: var(--ink); }

/* ── Hero ── */
.hero {
  padding: 120px 0 140px;
  max-width: 820px;
}

.hero-loc {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--ink3);
  letter-spacing: 0.6px;
  text-transform: uppercase;
  margin-bottom: 28px;
}

.hero h1 {
  font-size: 64px;
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -1.4px;
  margin: 0 0 32px;
  color: var(--ink);
  text-wrap: pretty;
}

.hero p {
  font-size: 19px;
  line-height: 1.6;
  color: var(--ink2);
  max-width: 640px;
  margin: 0;
}

/* ── Stats strip ── */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  padding: 28px 0;
  margin-bottom: 100px;
  font-family: 'JetBrains Mono', monospace;
}

.stat .k {
  font-size: 11px;
  color: var(--ink3);
  text-transform: uppercase;
  letter-spacing: 0.8px;
  margin-bottom: 10px;
}

.stat .v {
  font-size: 22px;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

/* ── Projects ── */
.projects {
  margin-bottom: 120px;
}

.section-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 36px;
}

.section-title {
  font-size: 14px;
  font-family: 'JetBrains Mono', monospace;
  color: var(--ink3);
  text-transform: uppercase;
  letter-spacing: 1.2px;
  font-weight: 500;
  margin: 0;
}

.section-count {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--ink4);
}

.projects-list {
  border-top: 1px solid var(--rule);
}

.project-row {
  display: grid;
  grid-template-columns: 80px 1fr 140px 100px;
  gap: 32px;
  padding: 28px 0;
  border-bottom: 1px solid var(--rule);
  align-items: baseline;
}

.project-num {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--ink4);
}

.project-title {
  font-size: 22px;
  color: var(--ink);
  letter-spacing: -0.3px;
  margin-bottom: 6px;
}

.project-desc {
  font-size: 15px;
  color: var(--ink2);
  line-height: 1.55;
  max-width: 560px;
}

.project-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

.tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  color: var(--ink3);
  border: 1px solid var(--rule);
  padding: 3px 8px;
  border-radius: 2px;
}

.project-kind {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--ink3);
}

.project-year {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  color: var(--ink3);
  text-align: right;
}

/* ── Now + Links ── */
.now-and-links {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 64px;
  margin-bottom: 120px;
}

.now-date {
  font-family: 'JetBrains Mono', monospace;
}

.now p:first-of-type {
  font-size: 19px;
  line-height: 1.6;
  color: var(--ink);
  margin: 0 0 16px;
  text-wrap: pretty;
}

.now p:last-of-type {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink3);
  margin: 0;
}

.link-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px dashed var(--rule);
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
}

.link-label { color: var(--ink2); }
.link-href  { color: var(--ink4); }
.link-href.self-hosted { color: var(--accent); }

/* ── Footer ── */
footer {
  border-top: 1px solid var(--rule);
  padding-top: 24px;
  display: flex;
  justify-content: space-between;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  color: var(--ink4);
}

/* ── Responsive ── */
@media (max-width: 720px) {
  body {
    padding: 32px 20px 60px;
  }

  .hero h1 {
    font-size: 40px;
    letter-spacing: -0.8px;
  }

  .hero p { font-size: 16px; }

  .stats {
    grid-template-columns: repeat(2, 1fr);
    gap: 24px 0;
  }

  .project-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .project-year { text-align: left; }

  .now-and-links {
    grid-template-columns: 1fr;
    gap: 48px;
  }

  nav { display: none; }
}
