/* ===== Night Chart — shared styles ===== */

:root{
  --ink: #0D1418;
  --panel: #16232B;
  --panel-alt: #1C2A32;
  --line: #24333B;
  --parchment: #EDE7D8;
  --parchment-dim: #9AA6A3;
  --amber: #D9A54B;
  --amber-bright: #F0C374;
  --teal: #4A7A78;
  --max: 900px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--ink);
  color:var(--parchment);
  font-family:'Public Sans', system-ui, sans-serif;
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:'Spectral', Georgia, serif;font-weight:500;letter-spacing:-0.01em;margin:0;color:var(--parchment);}
.mono{font-family:'JetBrains Mono', ui-monospace, monospace;}
a{color:var(--amber-bright);text-decoration:none;border-bottom:1px solid rgba(240,195,116,0.35);transition:border-color .15s ease, color .15s ease;}
a:hover{color:#FBDCA0;border-color:#FBDCA0;}
a:focus-visible, button:focus-visible{outline:2px solid var(--amber-bright);outline-offset:3px;}
p{margin:0 0 18px;color:#D6D0C1;}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px;}
section{padding:64px 0;}
section + section{border-top:1px solid var(--line);}

/* Nav */
.nav{border-bottom:1px solid var(--line);position:relative;z-index:10;}
.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:22px 28px;flex-wrap:wrap;gap:14px;}
.brand{
  font-family:'JetBrains Mono', monospace;
  font-size:14px;
  letter-spacing:0.06em;
  color:var(--parchment);
  border-bottom:none;
}
.brand:hover{color:var(--amber-bright);}
.nav-links{display:flex;gap:28px;flex-wrap:wrap;}
.nav-links a{
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  letter-spacing:0.08em;
  color:var(--parchment-dim);
  border-bottom:1px solid transparent;
  padding-bottom:3px;
}
.nav-links a:hover{color:var(--parchment);border-color:var(--line);}
.nav-links a.active{color:var(--amber-bright);border-color:var(--amber);}

/* Hero */
.hero{position:relative;padding:88px 0 64px;overflow:hidden;}
.hero-canvas-wrap{position:absolute;inset:0;pointer-events:none;}
.hero-canvas-wrap canvas{width:100%;height:100%;display:block;opacity:0.9;}
.hero-fade{position:absolute;inset:0;background:radial-gradient(ellipse at 22% 40%, rgba(13,20,24,0.15) 0%, rgba(13,20,24,0.85) 58%, rgba(13,20,24,1) 100%);pointer-events:none;}
.hero-content{position:relative;z-index:2;}
.hero-grid{display:grid;grid-template-columns:1.05fr 0.95fr;gap:32px;align-items:end;}
.hero-portrait{position:relative;display:flex;justify-content:center;align-items:flex-end;height:100%;}
.hero-portrait img{
  max-width:100%;
  width:420px;
  filter:drop-shadow(0 18px 40px rgba(0,0,0,0.55));
}
.hero-portrait::before{
  content:"";
  position:absolute;
  left:50%;top:8%;
  width:300px;height:300px;
  transform:translateX(-50%);
  background:radial-gradient(circle, rgba(217,165,75,0.22) 0%, rgba(217,165,75,0) 70%);
  pointer-events:none;
}
.kicker{
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  letter-spacing:0.06em;
  color:var(--amber);
  margin-bottom:20px;
}
.hero h1{font-size:clamp(40px, 6.5vw, 60px);line-height:1.05;}
.hero .role{
  font-family:'Spectral', serif;
  font-style:italic;
  font-size:clamp(18px, 2.4vw, 22px);
  color:var(--parchment-dim);
  margin-top:10px;
  margin-bottom:26px;
}
.hero .lede{font-size:18px;max-width:560px;}
.cta-row{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px;}
.btn{
  display:inline-block;
  font-family:'JetBrains Mono', monospace;
  font-size:13.5px;
  letter-spacing:0.03em;
  padding:13px 22px;
  border-radius:3px;
  border-bottom:none;
}
.btn-primary{background:var(--amber-bright);color:var(--ink);font-weight:600;}
.btn-primary:hover{background:#FBDCA0;color:var(--ink);border-bottom:none;}
.btn-ghost{background:transparent;color:var(--parchment);border:1px solid var(--line);}
.btn-ghost:hover{border-color:var(--amber);color:var(--amber-bright);}

/* Readout strip */
.readouts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:56px;position:relative;z-index:2;}
.readout{background:var(--panel);padding:20px 18px;}
.readout .val{font-family:'JetBrains Mono', monospace;font-size:22px;color:var(--amber-bright);}
.readout .label{font-family:'JetBrains Mono', monospace;font-size:11.5px;color:var(--parchment-dim);letter-spacing:0.04em;margin-top:6px;}

/* Section headers */
h2.section-title{font-size:clamp(24px,3.2vw,30px);margin-bottom:12px;}
.section-intro{font-size:17.5px;color:var(--parchment-dim);margin-bottom:36px;max-width:560px;}

/* Waypoint timeline */
.timeline{position:relative;padding-left:28px;}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:linear-gradient(var(--amber), var(--line));}
.waypoint{position:relative;padding-bottom:40px;}
.waypoint:last-child{padding-bottom:0;}
.waypoint::before{
  content:"";position:absolute;left:-28px;top:4px;
  width:11px;height:11px;border-radius:50%;
  background:var(--ink);border:2px solid var(--amber);
}
.waypoint .dates{font-family:'JetBrains Mono', monospace;font-size:12.5px;color:var(--amber);margin-bottom:6px;}
.waypoint h3{font-size:19px;margin-bottom:4px;}
.waypoint .org{color:var(--parchment-dim);font-size:14.5px;margin-bottom:10px;}
.waypoint p{margin-bottom:0;font-size:15.5px;}

/* Tags / skills */
.skill-group{margin-bottom:24px;}
.skill-group:last-child{margin-bottom:0;}
.skill-group .label{font-family:'JetBrains Mono', monospace;font-size:12px;color:var(--parchment-dim);margin-bottom:11px;letter-spacing:0.03em;}
.tags{display:flex;flex-wrap:wrap;gap:9px;}
.tag{
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  padding:6px 11px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--parchment);
}

/* Port / project cards */
.port{padding:30px 0;border-top:1px solid var(--line);}
.port:first-of-type{border-top:none;padding-top:0;}
.port h3{font-size:22px;margin-bottom:4px;}
.port .meta{font-family:'JetBrains Mono', monospace;font-size:12.5px;color:var(--amber);margin-bottom:14px;}
.port .stack{font-family:'JetBrains Mono', monospace;font-size:12px;color:var(--parchment-dim);margin-top:12px;}
.port .stack span{color:var(--parchment);}

/* Blog list */
.log-entry{padding:26px 0;border-top:1px solid var(--line);}
.log-entry:first-of-type{border-top:none;padding-top:0;}
.log-entry .tag-date{font-family:'JetBrains Mono', monospace;font-size:12px;color:var(--teal);margin-bottom:8px;}
.log-entry h3{font-size:21px;margin-bottom:8px;}
.log-entry h3 a{color:var(--parchment);border-bottom:none;}
.log-entry h3 a:hover{color:var(--amber-bright);}
.log-entry p{margin-bottom:0;}
.note{
  margin-top:30px;padding:14px 16px;background:var(--panel);
  border:1px dashed var(--line);border-radius:6px;
  font-family:'JetBrains Mono', monospace;font-size:12.5px;color:var(--parchment-dim);
}

/* Contact / signal list */
.channels{display:flex;flex-direction:column;gap:0;margin-bottom:36px;}
.channel{display:flex;align-items:baseline;gap:18px;padding:16px 0;border-top:1px solid var(--line);}
.channel:first-child{border-top:none;}
.channel .ch-label{font-family:'JetBrains Mono', monospace;font-size:12px;color:var(--parchment-dim);width:110px;flex-shrink:0;letter-spacing:0.04em;}
.channel a, .channel span.val{font-size:16.5px;color:var(--parchment);}
.channel a{color:var(--amber-bright);}

/* Home teaser grid */
.teaser-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;}
.teaser-col h3.sub{font-family:'JetBrains Mono', monospace;font-size:13px;letter-spacing:0.06em;color:var(--parchment-dim);margin-bottom:18px;text-transform:none;}
.teaser-item{padding:14px 0;border-top:1px solid var(--line);}
.teaser-item:first-of-type{border-top:none;padding-top:0;}
.teaser-item a{color:var(--parchment);font-size:16px;border-bottom:none;}
.teaser-item a:hover{color:var(--amber-bright);}
.teaser-item .t-meta{font-family:'JetBrains Mono', monospace;font-size:11.5px;color:var(--teal);margin-top:4px;}

footer{padding:30px 0 44px;font-family:'JetBrains Mono', monospace;font-size:12px;color:var(--parchment-dim);}
.footer-inner{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}

/* Article page */
.article-head{padding-bottom:8px;}
.article-body p{font-size:17px;}
.article-body h2{font-size:22px;margin:32px 0 14px;}

@media (max-width:720px){
  .readouts{grid-template-columns:repeat(2,1fr);}
  .teaser-grid{grid-template-columns:1fr;gap:36px;}
  .hero-grid{grid-template-columns:1fr;}
  .hero-portrait{order:-1;max-width:260px;margin:0 auto;}
  .hero-portrait img{width:220px;}
  section{padding:48px 0;}
  .hero{padding:56px 0 44px;}
  .channel{flex-direction:column;gap:4px;}
  .channel .ch-label{width:auto;}
}
