:root{
  --bg:#ffffff; --fg:#1a1a1a; --muted:#6b6b6b; --rule:#e3e3e3;
  --accent:#1f4e79; --chip:#f4f6f8; --link:#1f4e79;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#15171a; --fg:#e6e6e6; --muted:#9aa0a6; --rule:#2c3035;
    --accent:#8ab4f8; --chip:#1e2126; --link:#8ab4f8;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--fg);
  font:16px/1.62 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,
       "Helvetica Neue","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
}
.wrap{max-width:56rem; margin:0 auto; padding:2.5rem 1.25rem 4rem}
a{color:var(--link)}
a:hover{text-decoration:none}

header.cv{border-bottom:2px solid var(--accent); padding-bottom:1rem; margin-bottom:2rem}
header.cv h1{margin:0 0 .4rem; font-size:2.1rem; letter-spacing:-.01em}
.contact{display:flex; flex-wrap:wrap; gap:.4rem 1.1rem; color:var(--muted); font-size:.95rem}
.contact a{text-decoration:none}
.actions{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1rem}
.actions a{
  display:inline-block; padding:.4rem .85rem; border:1px solid var(--rule);
  border-radius:999px; background:var(--chip); text-decoration:none; font-size:.9rem;
}
.actions a[aria-current="page"]{border-color:var(--accent); color:var(--accent); font-weight:600}

.rubric{margin:0 0 2.25rem}
.rubric h2{
  font-size:1.02rem; text-transform:uppercase; letter-spacing:.09em;
  color:var(--accent); margin:0 0 .9rem; padding-bottom:.35rem;
  border-bottom:1px solid var(--rule);
}
.rubric h3{font-size:.95rem; margin:1.4rem 0 .7rem; color:var(--muted)}

.entry{display:grid; grid-template-columns:11rem 1fr; gap:0 1.5rem; margin-bottom:1.15rem}
.entry-key{color:var(--muted); font-size:.9rem; padding-top:.15rem}
.entry-body>p{margin:0 0 .45rem}
.entry-body>p:last-child{margin-bottom:0}
.entry-body ul{margin:.3rem 0 .5rem; padding-left:1.15rem}
.entry-body li{margin:.15rem 0}

.pubs{list-style:none; margin:0; padding:0; counter-reset:pub}
.pub{display:grid; grid-template-columns:11rem 1fr; gap:0 1.5rem; margin-bottom:.9rem}
.pub-year{color:var(--muted); font-size:.9rem}
.pub-venue{font-style:italic; color:var(--muted)}
.pub-flag{color:var(--accent)}
.cites{font-size:.85rem}
.cite{text-decoration:none}
code{background:var(--chip); padding:.05em .3em; border-radius:3px; font-size:.9em}

footer.cv{margin-top:3rem; padding-top:1rem; border-top:1px solid var(--rule);
          color:var(--muted); font-size:.85rem}
footer.cv a{color:var(--muted)}

@media (max-width:640px){
  .wrap{padding:1.75rem 1rem 3rem}
  header.cv h1{font-size:1.65rem}
  .entry,.pub{grid-template-columns:1fr; gap:.15rem}
  .entry-key,.pub-year{font-weight:600; color:var(--accent); font-size:.85rem}
}
@media print{
  .actions{display:none}
  body{background:#fff; color:#000}
  .wrap{max-width:none; padding:0}
}
