/* ASCII section divider */
.adiv {
  color: var(--dim);
  font-size: 17px;
  margin: 10px 0 12px;
  letter-spacing: 0;
}

/* Info grid */
.info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 0;
  border: 1px solid var(--border);
  margin-bottom: 14px;
}
.ig-cell {
  padding: 7px 12px;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.ig-cell:nth-child(even):last-child { border-right: none; }
.ig-k { font-size: 16px; color: var(--txt2); letter-spacing: 1px; text-transform: uppercase; }
.ig-v { font-size: 21px; color: var(--val); }

/* Bio text */
.bio-txt {
  font-size: 20px;
  color: var(--txt);
  line-height: 1.65;
  max-width: 680px;
  margin-bottom: 14px;
}

/* Skill bars */
.skill-section { margin-bottom: 6px; }
.skill-hdr { font-size: 18px; color: var(--txt2); letter-spacing: 2px; margin-bottom: 8px; }
.skill-row { display: flex; align-items: center; gap: 10px; margin: 6px 0; font-size: 20px; }
.sk-name { width: 170px; color: var(--txt); flex-shrink: 0; }
.sk-bar-wrap { flex: 1; position: relative; }
.sk-track { color: var(--dim); letter-spacing: -2px; user-select: none; }
.sk-fill  {
  position: absolute; left: 0; top: 0;
  color: var(--prompt); letter-spacing: -2px;
  text-shadow: 0 0 6px rgba(61,227,122,.3);
  overflow: hidden; width: 0;
  white-space: nowrap;
  transition: width 1.1s ease;
}
.sk-pct   { width: 36px; text-align: right; font-size: 16px; color: var(--dim); }

/* Skill groups */
.skill-group { display: flex; align-items: baseline; gap: 14px; margin: 7px 0; font-size: 19px; }
.sg-cat { color: var(--dim); font-size: 15px; width: 90px; flex-shrink: 0; letter-spacing: 1px; }
.sg-items { color: var(--txt); }

/* Job cards */
.job-card {
  border: 1px solid var(--border);
  margin-bottom: 12px;
}
.job-header {
  background: var(--bg3);
  padding: 7px 14px;
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--border);
}
.jh-title { font-size: 20px; color: var(--accent); }
.jh-org   { font-size: 17px; color: var(--txt2); }
.jh-date  { font-size: 15px; color: var(--dim); margin-left: auto; }
.job-body  { padding: 9px 14px; font-size: 19px; color: var(--txt); line-height: 1.65; }

/* Project grid */
.proj-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 10px;
  align-items: stretch;
}
.proj-card {
  border: 1px solid var(--border);
  background: var(--bg2);
  transition: border-color .15s, background .15s;
  text-decoration: none;
  color: inherit;
  display: flex;
  flex-direction: column;
  cursor: default;
}
.proj-card.linked { cursor: pointer; }
.proj-card.linked:hover { border-color: var(--prompt); background: var(--bg3); }
.proj-card.linked:hover .pc-name { color: var(--prompt); }
.pc-top {
  padding: 10px 14px 8px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: flex-start;
  gap: 8px;
  min-height: 58px;
}
.pc-top i { font-size: 20px; color: var(--prompt); margin-right: 8px; flex-shrink: 0; margin-top: 2px; }
.pc-name { font-size: 19px; color: var(--txt); }
.pc-body { padding: 8px 14px 10px; font-size: 17px; flex: 1; display: flex; flex-direction: column; }
.pc-url  { color: var(--cmd); margin-bottom: 3px; }
.pc-desc { color: var(--txt2); font-size: 16px; flex: 1; line-height: 1.5; margin-bottom: 8px; }
.pc-tag  { color: var(--dim); }
.pc-live { color: var(--live); text-shadow: 0 0 6px rgba(61,227,122,.4); }
.pc-article { display: inline-block; margin-top: 8px; font-size: 14px; color: var(--cmd); text-decoration: none; letter-spacing: 1px; }
.pc-article:hover { color: var(--prompt); }

/* Clickable info-grid cell */
.ig-link { cursor: pointer; transition: background .12s; }
.ig-link:hover { background: var(--bg3); }

/* Project card description */
.pc-desc { color: var(--txt2); font-size: 16px; margin-bottom: 6px; line-height: 1.5; }

/* Publication cards */
.pub-card {
  border: 1px solid var(--border);
  margin-bottom: 12px;
  padding: 10px 14px;
}
.pub-badges { display: flex; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.pub-badge {
  font-size: 13px;
  padding: 1px 8px;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.pub-badge-first { color: var(--prompt); border: 1px solid var(--prompt); }
.pub-badge-award { color: var(--accent); border: 1px solid var(--accent); }
.pub-title { font-size: 18px; color: var(--txt); line-height: 1.45; margin-bottom: 5px; }
.pub-authors { font-size: 15px; color: var(--dim); margin-bottom: 6px; line-height: 1.4; }
.pub-meta { font-size: 15px; display: flex; gap: 14px; align-items: baseline; flex-wrap: wrap; }
.pub-venue { color: var(--val); }
.pub-cites { color: var(--dim); }
.pub-doi { color: var(--cmd); text-decoration: none; }
.pub-doi:hover { color: var(--prompt); }

/* Contact list */
.contact-box {
  border: 1px solid var(--border);
  max-width: 480px;
  margin-bottom: 16px;
}
.contact-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 9px 16px;
  border-bottom: 1px solid var(--border);
  font-size: 20px;
  transition: background .12s;
}
.contact-row:last-child { border-bottom: none; }
.contact-row:hover { background: var(--bg3); }
.contact-row i { font-size: 18px; width: 24px; color: var(--prompt); margin-right: 6px; text-align: center; }
.cr-label { color: var(--dim); width: 120px; font-size: 17px; }
.cr-val { color: var(--txt); }
.cr-val a { color: var(--cmd); text-decoration: none; }
.cr-val a:hover { color: var(--prompt); }

/* ASCII art box for contact */
.ascii-box {
  font-family: ui-monospace, 'SF Mono', Menlo, Monaco, Consolas, 'Courier New', monospace;
  font-size: 15px;
  color: var(--dim);
  white-space: pre;
  line-height: 1.4;
  margin-bottom: 14px;
}
.ascii-box .hi { color: var(--prompt); }

/* Section scroll anchors */
.section { margin-bottom: 32px; scroll-margin-top: 10px; }
.sec-hdr {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
  margin: 4px 0 22px;
  border: 1px solid var(--border);
  background: var(--bg2);
  font-size: 22px;
  letter-spacing: 1px;
  border-left: 3px solid var(--prompt);
}
.sec-hdr .pr { color: var(--prompt); }
.sec-hdr .ct { color: var(--cmd); }
.sec-hdr .ca { color: var(--val); }
.sec-hdr .cf { color: var(--accent); }

/* Typewriter reveal */
.tw { white-space: pre-wrap; }
