/* ============================================================
   home.css — Personal homepage
   Design language: SpaceX-inspired (pure black, uppercase D-DIN
   display, ghost pill CTA, full-bleed bands). Tokens transcribed
   from awesome-design-md/design-md/spacex/DESIGN.md
   ============================================================ */

:root {
  --canvas-night: #000000;
  --canvas-night-soft: #0a0a0a;
  --canvas-light: #ffffff;
  --canvas-cool: #f0f0fa;
  --on-primary: #ffffff;
  --on-primary-mute: #f0f0fa;
  --ink-mute: #9a9aa2;
  --hairline-on-dark: #3a3a3f;

  --r-pill: 32px;

  --sp-xs: 8px;
  --sp-sm: 12px;
  --sp-md: 16px;
  --sp-lg: 18px;
  --sp-xl: 24px;
  --sp-xxl: 32px;
  --sp-huge: 48px;

  /* Inter at 700 is the documented D-DIN substitute */
  --display: "Inter", "Arial Narrow", Arial, Verdana, sans-serif;
  --ui: "Inter", Arial, Verdana, sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  background: var(--canvas-night);
  color: var(--on-primary);
  font-family: var(--ui);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

a { color: inherit; text-decoration: none; }

/* ---------- Display type ---------- */
.eyebrow {
  font-family: var(--ui);
  font-size: 12px;
  font-weight: 400;
  line-height: 2;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--on-primary-mute);
}

.display-xxl,
.display-xl,
.display-lg {
  font-family: var(--display);
  font-weight: 800;
  text-transform: uppercase;
}
.display-xxl { font-size: clamp(40px, 9vw, 92px); line-height: 0.95; letter-spacing: 1.6px; }
.display-xl  { font-size: clamp(34px, 6vw, 60px); line-height: 1.05; letter-spacing: 1.2px; }
.display-lg  { font-size: clamp(28px, 4.5vw, 48px); line-height: 1.15; letter-spacing: 0.96px; }

.lead {
  font-size: clamp(15px, 1.4vw, 18px);
  line-height: 1.7;
  letter-spacing: 0.2px;
  color: var(--on-primary-mute);
  max-width: 60ch;
}

/* ---------- Ghost pill CTA (the only marketing button) ---------- */
.btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 18px 24px;
  border: 1px solid var(--on-primary);
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--on-primary);
  font-family: var(--ui);
  font-size: 13px;
  font-weight: 700;
  line-height: 0.94;
  letter-spacing: 1.17px;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .25s ease, color .25s ease;
}
.btn-ghost:hover { background: var(--on-primary); color: var(--canvas-night); }
.btn-ghost .arrow { transition: transform .25s ease; }
.btn-ghost:hover .arrow { transform: translateX(4px); }

/* ---------- Fixed nav overlay ---------- */
.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp-xl) var(--sp-xxl);
  transition: background .3s ease, backdrop-filter .3s ease;
}
.nav.scrolled { background: rgba(0,0,0,.72); backdrop-filter: blur(8px); }
.nav__brand {
  font-family: var(--display);
  font-weight: 800;
  font-size: 15px;
  letter-spacing: 2.4px;
  text-transform: uppercase;
}
.nav__links { display: flex; gap: var(--sp-xl); }
.nav__links a {
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--on-primary);
  opacity: .85;
  transition: opacity .2s ease;
}
.nav__links a:hover { opacity: 1; }
.nav__toggle { display: none; }

/* ---------- Bands ---------- */
.band {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 120px var(--sp-xxl) var(--sp-huge);
}
.band__inner { width: 100%; max-width: 1200px; margin: 0 auto; }
/* Content bands align to top so every module's eyebrow sits the
   same distance from the top edge (hero stays vertically centered). */
.about, .work, .facts { justify-content: flex-start; }

/* Hero backdrop — an engineered grid + glow stands in for the
   full-bleed launch photograph until real imagery is dropped in. */
.hero {
  background:
    radial-gradient(120% 90% at 50% 0%, #14181f 0%, #050608 55%, #000 100%);
  overflow: hidden;
}
.hero::before {
  content: "";
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(80% 70% at 50% 35%, #000 30%, transparent 80%);
  pointer-events: none;
}
.hero::after {
  content: "";
  position: absolute; inset: 0;
  /* horizon glow anchored at the hero's bottom edge (beneath the
     SCROLL cue). The matching lower half lives in .about::before,
     so the ellipse continues seamlessly across the section boundary. */
  background: radial-gradient(55% 36vh at 50% 100%, rgba(96,134,255,.26), transparent 70%);
  pointer-events: none;
}
.hero__stack > * + * { margin-top: var(--sp-xl); }
.hero__cta { margin-top: var(--sp-huge); display: flex; gap: var(--sp-md); flex-wrap: wrap; }

.scroll-cue {
  position: absolute; left: 50%; bottom: 28px; transform: translateX(-50%);
  font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
  color: var(--ink-mute); display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.scroll-cue span { width: 1px; height: 34px; background: linear-gradient(var(--ink-mute), transparent); }

/* Featured work band — full-bleed dark editorial card */
.feature {
  background: var(--canvas-night-soft);
  border-top: 1px solid var(--hairline-on-dark);
  border-bottom: 1px solid var(--hairline-on-dark);
}
.feature__art {
  position: absolute; inset: 0;
  background:
    radial-gradient(90% 120% at 80% 20%, #1b2230 0%, #0a0d12 55%, #050608 100%);
  overflow: hidden;
}
.feature__art::before {
  content: "";
  position: absolute; inset: 0;
  background-image: radial-gradient(rgba(120,160,255,.10) 1px, transparent 1.4px);
  background-size: 22px 22px;
  mask-image: radial-gradient(70% 80% at 75% 30%, #000, transparent 75%);
}
.feature .band__inner { position: relative; z-index: 2; }
.feature__index { font-size: 12px; letter-spacing: 1.6px; color: var(--ink-mute); text-transform: uppercase; }
.feature__stack > * + * { margin-top: var(--sp-lg); }
.feature__meta {
  display: flex; flex-wrap: wrap; gap: var(--sp-xl);
  margin-top: var(--sp-xl);
  font-size: 12px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--on-primary-mute);
}
.feature__meta span { display: inline-flex; flex-direction: column; gap: 4px; }
.feature__meta strong { font-size: 20px; letter-spacing: .5px; font-weight: 800; color: #fff; }
.feature__cta { margin-top: var(--sp-huge); }

/* About band */
.about { background: #000; }
/* lower half of the hero's horizon glow — same ellipse continued:
   horizontal radius 55% of width; vertical radius 90% × 40vh = 36vh,
   matching the hero's 36% × 100vh */
.about::before {
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 40vh;
  background: radial-gradient(55% 36vh at 50% 0%, rgba(96,134,255,.26), transparent 70%);
  pointer-events: none;
}
.about .band__inner { position: relative; z-index: 1; }
.about__grid { display: grid; grid-template-columns: 1fr; gap: var(--sp-huge); }
.about__body > * + * { margin-top: var(--sp-md); }
.about__list { list-style: none; display: grid; gap: 1px; background: var(--hairline-on-dark); border: 1px solid var(--hairline-on-dark); }
.about__list li { background: #000; padding: var(--sp-lg) var(--sp-md); }
.about__list .k { font-size: 11px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--ink-mute); }
.about__list .v { margin-top: 6px; font-size: 15px; color: var(--on-primary-mute); }

@media (min-width: 900px) {
  .about__grid { grid-template-columns: 1.3fr 1fr; align-items: start; }
}

/* Footer */
.footer {
  background: var(--canvas-night);
  border-top: 1px solid var(--hairline-on-dark);
  padding: var(--sp-xxl);
}
.footer__inner { max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--sp-xl); }
.footer__cols { display: flex; flex-wrap: wrap; gap: var(--sp-huge); justify-content: space-between; }
.footer__brand { font-family: var(--display); font-weight: 800; letter-spacing: 2.4px; text-transform: uppercase; }
.footer__links { display: flex; flex-wrap: wrap; gap: var(--sp-xl); }
.footer__links a { font-size: 12px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--on-primary-mute); }
.footer__legal { font-size: 13px; color: var(--ink-mute); border-top: 1px solid var(--hairline-on-dark); padding-top: var(--sp-md); }

/* Hero name lockup */
.hero__name { font-family: var(--display); font-weight: 800; text-transform: uppercase; }
.hero__cn { font-size: clamp(15px,1.4vw,18px); letter-spacing: 6px; color: var(--on-primary-mute); }

/* ---------- Selected work grid ---------- */
.work { background: var(--canvas-night-soft); border-top: 1px solid var(--hairline-on-dark); }
.work__grid { display: grid; grid-template-columns: 1fr; gap: 1px; background: var(--hairline-on-dark);
  border: 1px solid var(--hairline-on-dark); margin-top: var(--sp-xl); }
@media (min-width: 760px){ .work__grid { grid-template-columns: 1fr 1fr; } }
.work-card { position: relative; background: #000; min-height: 280px;
  padding: 72px var(--sp-xl) var(--sp-xl);   /* top padding reserves room for the pinned tag row */
  display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden;
  transition: background .3s ease; }
.work-card:hover { background: #07080b; }
.work-card--lead { grid-column: 1 / -1; }
.work-card__art { position: absolute; inset: 0; opacity: .5; pointer-events: none; }
.work-card--knee .work-card__art { background: radial-gradient(90% 120% at 85% 15%, #1b2433, #0a0d12 60%, #000); }
.work-card--focus .work-card__art { background: radial-gradient(90% 120% at 85% 15%, #2a1c33, #0c0a12 60%, #000); }
.work-card--bake .work-card__art { background: radial-gradient(90% 120% at 85% 15%, #33291b, #120e08 60%, #000); }
.work-card--ski .work-card__art { background: radial-gradient(90% 120% at 85% 15%, #152a30, #08110f 60%, #000); }
.work-card > * { position: relative; z-index: 2; }
/* Tag row pinned at identical coordinates in every card */
.work-card__top { position: absolute; top: var(--sp-xl); left: var(--sp-xl); right: var(--sp-xl); z-index: 2;
  display: flex; justify-content: space-between; align-items: baseline; gap: var(--sp-md); }
.work-card__tag { font-size: 11px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--ink-mute); }
.work-card__yr { font-size: 11px; letter-spacing: 1.4px; color: var(--ink-mute); }
.work-card__title { font-family: var(--display); font-weight: 800; text-transform: uppercase;
  font-size: clamp(24px, 3.2vw, 40px); line-height: 1; letter-spacing: .6px; }
.work-card__sub { margin-top: 10px; font-size: 14px; line-height: 1.55; color: var(--on-primary-mute); max-width: 46ch; }
.work-card__links { margin-top: var(--sp-md); display: flex; flex-wrap: wrap; gap: 14px; }
.work-card__links a { font-size: 11px; letter-spacing: 1.2px; text-transform: uppercase;
  border: 1px solid var(--hairline-on-dark); border-radius: var(--r-pill); padding: 8px 14px;
  color: var(--on-primary); transition: background .2s, color .2s; }
.work-card__links a:hover { background: #fff; color: #000; }
.work-card__go { font-size: 12px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--ink-mute); }

/* ---------- Background facts ---------- */
.facts { background: #000; }
.facts__grid { display: grid; grid-template-columns: 1fr; gap: var(--sp-huge); margin-top: var(--sp-xl); }
@media (min-width: 860px){ .facts__grid { grid-template-columns: 1fr 1fr; } }
.facts__col h3 { font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase; color: var(--ink-mute); margin-bottom: var(--sp-md); }
.facts__item { padding: var(--sp-md) 0; border-top: 1px solid var(--hairline-on-dark); }
.facts__item .p { font-size: 16px; color: #fff; }
.facts__item .s { font-size: 13px; color: var(--ink-mute); margin-top: 4px; }
.tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: var(--sp-md); }
.tag { font-size: 12px; letter-spacing: .4px; color: var(--on-primary-mute);
  border: 1px solid var(--hairline-on-dark); border-radius: var(--r-pill); padding: 7px 13px; }
.honor-row { display: flex; gap: var(--sp-md); align-items: baseline; padding: var(--sp-sm) 0; border-top: 1px solid var(--hairline-on-dark); }
.honor-row .y { font-size: 12px; color: var(--ink-mute); min-width: 52px; }
.honor-row .t { font-size: 15px; color: #fff; }

/* Reveal on scroll */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s ease; }
.reveal.in { opacity: 1; transform: none; }

/* ---------- Responsive ---------- */
@media (max-width: 768px) {
  .nav { padding: var(--sp-md) var(--sp-lg); }
  .nav__links { gap: var(--sp-md); }
  .band { padding: 80px var(--sp-lg) var(--sp-xl); }
  /* hero keeps a little more breathing room above the name lockup */
  .hero { padding-top: 104px; }
  .feature__meta { gap: var(--sp-md); }
}
@media (max-width: 560px) {
  /* keep Work + Contact reachable; hide the two longer anchors */
  .nav__links a[href="#about"], .nav__links a[href="#background"] { display: none; }
  .nav__brand { font-size: 14px; letter-spacing: 1.6px; }
  .nav__links { gap: var(--sp-md); }
  .band { padding: 64px var(--sp-lg) var(--sp-xl); }
  .hero { padding-top: 92px; }
  .about__list li { padding: var(--sp-md) var(--sp-sm); }
}
