:root{
  --bg:#FFFFFF;
  --surface-2:#F4F6F9;
  --ink:#14171C;
  --ink-soft:#4A5160;
  --ink-faint:#868C99;
  --rule:rgba(20,23,28,0.14);
  --header-bg:#FFFFFF;
  --header-ink:#14171C;
  --header-ink-soft:#4A5160;
  --accent:#13294B;
  --accent-soft:rgba(19,41,75,0.08);
  --focus:#13294B;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Public Sans', -apple-system, "Segoe UI", sans-serif;
  font-size:16px;
  line-height:1.6;
}
a{color:var(--accent);}
a:focus-visible, button:focus-visible{outline:2px solid var(--focus); outline-offset:3px;}
img{max-width:100%;}
.wrap{max-width:1100px; margin:0 auto; padding-inline:24px;}
.mono{font-family:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;}

/* ---------- Header band ---------- */
.resume-header{background:var(--header-bg); padding-block:40px; border-bottom:3px solid var(--accent);}
.header-inner{
  display:flex; justify-content:space-between; align-items:center; gap:36px; flex-wrap:wrap;
}
.header-text{flex:1 1 380px; min-width:260px;}
.rname{
  margin:0; color:var(--accent); font-weight:800; letter-spacing:0.01em;
  text-transform:uppercase; font-size:clamp(28px,4.6vw,44px); line-height:1.05;
}
.rname a{color:inherit; text-decoration:none;}
.rtitle{
  margin:10px 0 0; color:var(--header-ink-soft); font-size:16px; font-weight:500;
}
.header-contact{
  margin-top:16px; font-family:'IBM Plex Mono', monospace; font-size:13px; font-weight:700; letter-spacing:0.02em;
  color:var(--header-ink); display:flex; flex-wrap:wrap; align-items:center; gap:10px;
}
.header-contact a{color:var(--accent); text-decoration:none; border-bottom:1.5px solid var(--accent);}
.header-contact a:hover{color:var(--header-ink); border-bottom-color:var(--header-ink);}
.header-contact .sep{color:var(--ink-faint); font-weight:400;}

/* ---------- Site nav ---------- */
.site-nav{background:var(--surface-2); border-bottom:1px solid var(--rule);}
.nav-inner{display:flex; gap:2px; flex-wrap:wrap;}
.nav-link{
  display:inline-block; padding:14px 18px; font-family:'IBM Plex Mono', monospace; font-size:12.5px;
  letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-soft); text-decoration:none;
  border-bottom:2px solid transparent;
}
.nav-link:hover{color:var(--ink);}
.nav-link.active{color:var(--accent); border-bottom-color:var(--accent); font-weight:600;}

.summary-row{display:flex; gap:32px; align-items:flex-start; flex-wrap:wrap;}
.summary-photo{
  flex:0 0 280px; width:280px; aspect-ratio:4/5; border-radius:4px; overflow:hidden;
  border:1px solid var(--rule);
}
.summary-photo img{width:100%; height:100%; object-fit:cover; object-position:center top; display:block;}
.summary-row .rtext{flex:1 1 320px; min-width:260px;}
@media (max-width:560px){ .summary-photo{flex:0 0 auto; width:100%; max-width:220px;} }

/* ---------- Section headings ---------- */
.rhead{
  margin:0 0 18px; color:var(--accent); font-size:15px; font-weight:700; letter-spacing:0.09em;
  text-transform:uppercase; border-bottom:2px solid var(--accent); padding-bottom:8px; width:fit-content;
}
.subhead{margin:0 0 14px; color:var(--accent); font-size:16.5px; font-weight:700;}
.rblock{margin-bottom:44px;}
.rblock:last-child{margin-bottom:0;}
.rtext{font-size:15.5px; line-height:1.7; color:var(--ink); max-width:70ch; margin:0 0 14px;}
.rtext p{margin:0 0 14px;}
.rtext p:last-child{margin-bottom:0;}
.rtext:last-child{margin-bottom:0;}
.rtext.lead{font-size:16.5px; color:var(--ink-soft); font-style:italic; max-width:66ch;}

/* ---------- Body layout ---------- */
.resume-body{padding-block:48px;}
.resume-grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(260px,320px); gap:60px; align-items:start;}
@media (max-width:820px){ .resume-grid{grid-template-columns:1fr; gap:44px;} }
.col-main, .col-side{display:flex; flex-direction:column;}
.page-col{max-width:760px;}

/* Experience */
.role-entry{padding:20px 0; border-top:1px solid var(--rule);}
.role-entry:first-child{border-top:none; padding-top:0;}
.role-head{display:flex; justify-content:space-between; align-items:baseline; gap:14px; flex-wrap:wrap; margin-bottom:3px;}
.role-title{font-size:17.5px; font-weight:700; color:var(--ink);}
.role-dates{font-family:'IBM Plex Mono', monospace; font-size:12.5px; color:var(--ink-faint); white-space:nowrap;}
.role-org{color:var(--accent); font-weight:600; font-size:14.5px; margin-bottom:10px;}
.role-org.stacked{display:flex; flex-direction:column; gap:2px;}
.role-org .loc{color:var(--ink-faint); font-weight:400;}
ul.bullets{margin:0; padding-left:18px;}
ul.bullets li{margin-bottom:9px; max-width:68ch; font-size:15px; line-height:1.6; color:var(--ink);}
ul.bullets li:last-child{margin-bottom:0;}

/* Core competencies / plain text lists */
.plain-list{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:11px;}
.plain-list li{font-size:13.5px; line-height:1.5; color:var(--ink-soft); padding-left:14px; position:relative;}
.plain-list li::before{content:"\2013"; position:absolute; left:0; color:var(--ink-faint);}
.plain-list.wide li{font-size:15px; max-width:68ch;}

/* Skills & capabilities (label + description lists) */
.cap-list{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:13px;}
.cap-list li{font-size:15px; line-height:1.6; color:var(--ink-soft); max-width:70ch;}
.cap-list .cap-label{color:var(--ink); font-weight:700; margin-right:2px;}

/* Skills page: grouped capability cards */
.skill-cards{display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
@media (max-width:760px){ .skill-cards{grid-template-columns:1fr;} }
.skill-card{
  border:1px solid var(--rule); border-top:4px solid var(--accent); border-radius:8px 8px 6px 6px;
  padding:26px 28px; background:var(--surface-2);
}
.skill-card .subhead{margin-bottom:16px;}
.skill-card .cap-list{gap:14px;}
.skill-card .cap-list li{font-size:14px; line-height:1.55; max-width:none;}
.skill-card .cap-label{color:var(--accent);}

/* Language pills */
.lang-chips{display:flex; flex-wrap:wrap; gap:10px;}
.lang-chip{
  display:inline-flex; align-items:baseline; gap:8px; padding:9px 16px; border:1px solid var(--accent);
  border-radius:20px; background:var(--accent-soft);
}
.lang-chip .lang-name{font-size:13.5px; font-weight:700; color:var(--accent);}
.lang-chip .lang-level{font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.03em; text-transform:uppercase; color:var(--ink-soft);}

/* Education */
.edu-entry{padding:0 0 16px;}
.edu-entry:last-child{padding-bottom:0;}
.edu-degree{font-weight:600; font-size:14px; line-height:1.4;}
.edu-school{color:var(--ink-soft); font-size:12.5px; margin-top:3px;}
.edu-entry.large .edu-degree{font-size:16px;}
.edu-entry.large .edu-school{font-size:13.5px;}
.edu-grid{display:flex; flex-direction:column; gap:22px;}

/* Publications */
.pub{display:grid; grid-template-columns:32px 1fr; gap:16px; padding:18px 0; border-top:1px solid var(--rule);}
.pub:first-child{border-top:none; padding-top:0;}
.pub-num{font-family:'IBM Plex Mono', monospace; color:var(--ink-faint); font-size:13px; padding-top:2px;}
.pub-text{font-size:14.5px; line-height:1.55; max-width:72ch; color:var(--ink);}
.pub-text .journal{font-style:italic; color:var(--ink-soft);}
.pub-badge{
  display:inline-block; font-family:'IBM Plex Mono', monospace; font-size:10px; letter-spacing:0.06em;
  text-transform:uppercase; color:var(--accent); border:1px solid var(--accent); border-radius:3px;
  padding:1px 6px; margin-right:8px; transform:translateY(-1px);
}
.pub-link{font-family:'IBM Plex Mono', monospace; font-size:12.5px; display:inline-block; margin-top:4px;}

/* Landing page tiles linking to sub-pages */
.page-links{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:8px;}
@media (max-width:700px){ .page-links{grid-template-columns:repeat(2,1fr);} }
@media (max-width:420px){ .page-links{grid-template-columns:1fr;} }
.page-link-card{
  display:flex; align-items:center; justify-content:center; text-align:center;
  padding:18px 14px; border:1px solid var(--rule); border-radius:6px; text-decoration:none;
  color:var(--ink); transition:border-color 0.15s, background 0.15s;
}
.page-link-card:hover{border-color:var(--accent); background:var(--accent-soft);}
.page-link-card .plc-title{
  font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.04em; text-transform:uppercase;
  color:var(--accent); font-weight:600;
}

footer{padding:30px 0 50px; border-top:1px solid var(--rule);}
.footer-inner{
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px;
  font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:var(--ink-faint);
}
