:root{
  --bg: #14120F;
  --surface: #1C1915;
  --surface-2: #23201B;
  --ink: #EDE6D6;
  --ink-dim: #B8AF9C;
  --amber: #E8A33D;
  --amber-dim: #8A6A32;
  --moss: #6F8A6F;
  --red: #C9614C;
  --hair: #33302A;

  --mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --sans: 'Public Sans', -apple-system, BlinkMacSystemFont, sans-serif;

  --max: 880px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

.grain{
  position:fixed; inset:0; pointer-events:none; z-index:1;
  opacity:.035; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

a{color:var(--amber); text-decoration:none; border-bottom:1px solid var(--amber-dim);}
a:hover{border-bottom-color:var(--amber);}
a:focus-visible, [tabindex]:focus-visible{
  outline:2px solid var(--amber); outline-offset:3px; border-radius:2px;
}
code{font-family:var(--mono); background:var(--surface-2); padding:.1em .35em; border-radius:3px; font-size:.9em;}

/* ---------- HERO ---------- */
.hero{
  max-width:var(--max); margin:0 auto; padding:5rem 1.5rem 3rem;
  display:grid; gap:2.5rem;
}
.hero__term{
  background:var(--surface); border:1px solid var(--hair); border-radius:10px;
  overflow:hidden; box-shadow:0 30px 60px -30px rgba(0,0,0,.6);
}
.term__bar{
  display:flex; align-items:center; gap:.4rem;
  padding:.6rem .8rem; border-bottom:1px solid var(--hair); background:var(--surface-2);
}
.dot{width:9px; height:9px; border-radius:50%; display:inline-block;}
.dot--r{background:#c9614c;} .dot--y{background:#e8a33d;} .dot--g{background:#6f8a6f;}
.term__title{margin-left:.6rem; font-family:var(--mono); font-size:.72rem; color:var(--ink-dim);}
.term__body{
  margin:0; padding:1.1rem 1.2rem 1.4rem; font-family:var(--mono); font-size:.82rem;
  color:var(--moss); white-space:pre-wrap; min-height:9.5em;
}
.term__body .ok{color:var(--moss);}
.term__body .path{color:var(--amber);}
.term__body .dim{color:var(--ink-dim);}
.cursor{display:inline-block; background:var(--amber); width:.55em; height:1em; vertical-align:-2px; animation:blink 1s step-end infinite;}
@keyframes blink{50%{opacity:0;}}

.hero__id{padding:0 .25rem;}
.eyebrow{font-family:var(--mono); font-size:.75rem; letter-spacing:.08em; color:var(--ink-dim); margin:0 0 .4rem;}
.wordmark{
  font-family:var(--mono); font-weight:800; font-size:clamp(2.6rem, 8vw, 4.6rem);
  margin:0; letter-spacing:-.02em; color:var(--ink);
}
.tagline{max-width:38ch; color:var(--ink-dim); font-size:1.05rem; margin:.9rem 0 1.2rem;}
.hero__meta{font-family:var(--mono); font-size:.78rem; color:var(--ink-dim);}
.sep{margin:0 .5rem; color:var(--hair);}

/* ---------- SECTIONS ---------- */
main{max-width:var(--max); margin:0 auto; padding:0 1.5rem;}
section{padding:3.2rem 0; border-top:1px solid var(--hair);}
.label{
  font-family:var(--mono); font-size:.75rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--amber-dim); margin:0 0 1.4rem;
}

/* about */
.about__grid{display:grid; grid-template-columns:1.3fr 1fr; gap:2.5rem;}
.about__lede{font-size:1.08rem; color:var(--ink); max-width:52ch;}
.about__facts{list-style:none; margin:0; padding:0; font-family:var(--mono); font-size:.82rem; display:grid; gap:.75rem;}
.about__facts li{color:var(--ink-dim); border-bottom:1px dashed var(--hair); padding-bottom:.6rem;}
.about__facts span{display:block; color:var(--amber); font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; margin-bottom:.2rem;}

/* projects: process table */
.ps{border:1px solid var(--hair); border-radius:8px; overflow:hidden;}
.ps__row{
  display:grid; grid-template-columns:150px 200px 100px 1fr;
  gap:1rem; padding:.9rem 1.1rem; border-bottom:1px solid var(--hair);
  align-items:start;
}
.ps__row:last-child{border-bottom:none;}
.ps__row--head{
  font-family:var(--mono); font-size:.68rem; text-transform:uppercase; letter-spacing:.06em;
  color:var(--ink-dim); background:var(--surface-2);
}
.ps__row:not(.ps__row--head):hover, .ps__row:not(.ps__row--head):focus-visible{background:var(--surface);}
.ps__name{font-family:var(--mono); font-weight:700; color:var(--ink);}
.ps__stack{font-family:var(--mono); font-size:.78rem; color:var(--ink-dim);}
.ps__status{font-family:var(--mono); font-size:.72rem; padding:.15rem .5rem; border-radius:20px; width:fit-content;}
.ps__status--run{color:var(--amber); border:1px solid var(--amber-dim);}
.ps__status--ok{color:var(--moss); border:1px solid #3d4a3d;}
.ps__desc{margin:0; font-size:.92rem; color:var(--ink-dim); grid-column:4;}
.ps__desc em{color:var(--ink); font-style:normal;}

/* stack tree */
.tree__pre{
  font-family:var(--mono); font-size:.82rem; line-height:1.9; color:var(--ink);
  background:var(--surface); border:1px solid var(--hair); border-radius:8px;
  padding:1.4rem 1.6rem; overflow-x:auto;
}
.tree__note{color:var(--ink-dim);}

/* contact */
.prompt{font-family:var(--mono); font-size:1rem;}
.prompt__line{margin:.5rem 0;}
.prompt__sym{color:var(--moss); margin-right:.6rem;}
.prompt__line--blink .cursor{margin-left:.3rem;}

.footer{
  max-width:var(--max); margin:0 auto; padding:2rem 1.5rem 4rem;
  font-family:var(--mono); font-size:.72rem; color:var(--ink-dim);
}

/* ---------- RESPONSIVE ---------- */
@media (max-width: 760px){
  .about__grid{grid-template-columns:1fr;}
  .ps__row{grid-template-columns:1fr; gap:.4rem;}
  .ps__row--head{display:none;}
  .ps__desc{grid-column:1;}
  .ps__status{margin-top:.2rem;}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  .cursor{animation:none; opacity:1;}
  *{transition:none !important; animation-duration:.001s !important;}
}
