/* Xi Feng portfolio: restrained editorial system for technical reading. */
:root{
  color-scheme:light dark;
  --paper:#fbfbfa;--surface:#f3f4f3;--ink:#181a1b;--body:#2c2e2f;
  --muted:#565b5d;--faint:#74797b;--rule:#d8dcda;--rule-strong:#242728;
  --accent:#245b75;
  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","Times New Roman",Georgia,serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Courier New",monospace;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--body);font-family:var(--serif);
  font-size:16px;line-height:1.85;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
.wrap{max-width:1040px;margin:0 auto;padding:0 32px}
main{display:block}
a{color:var(--ink);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--accent)}
a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}

/* Header */
.titleblock{text-align:center;padding:68px 0 24px}
.titleblock h1{margin:.2em 0 .18em;color:var(--ink);font-size:2.15rem;font-weight:700;letter-spacing:.015em;line-height:1.3}
.titleblock .sub{color:var(--muted);font-size:1.05rem}
.nav{display:flex;justify-content:center;gap:28px;margin-top:16px;font-size:.88rem}
.nav a{color:var(--muted);text-decoration:none}
.nav a:hover{color:var(--ink)}
.nav a.active{color:var(--ink);font-weight:700;text-decoration:underline;text-decoration-color:var(--accent)}

/* Shared section language */
.lbl{margin:0;color:var(--ink);font-size:1rem;font-weight:700;letter-spacing:.08em}
.section-head{margin-bottom:24px}
.section-head .lbl{font-size:1.28rem;letter-spacing:.04em}
.section-head p{max-width:660px;margin:7px 0 0;color:var(--muted);font-size:.94rem}
.section-head.compact{margin-bottom:14px}

/* About */
.abstract{width:100%;margin:16px 0 0;padding-bottom:42px}
.abstract .lbl{text-align:center;margin-bottom:14px}
.abstract p{margin:0 0 12px;text-align:left}
.abstract .intro{color:var(--ink);font-size:1.08rem}
.current-focus{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-top:20px;padding:0;
  border:0;font-family:var(--mono);font-size:.73rem;
}
.current-focus strong{color:var(--ink);font-family:var(--serif);font-size:.84rem}
.current-focus span{color:var(--muted)}

/* Featured work */
.projectlist{margin:10px auto 0;scroll-margin-top:24px}
.featured-project{margin-bottom:22px;padding:30px;border:1px solid var(--rule-strong);background:var(--paper)}
.project-topline{display:flex;align-items:flex-start;justify-content:space-between;gap:28px}
.project-type{margin:0 0 4px;color:var(--faint);font-family:var(--mono);font-size:.69rem;letter-spacing:.04em}
.p-name{margin:0;color:var(--ink);font-size:1.32rem;line-height:1.45}
.p-name a{text-decoration:none}
.report-link{
  flex:0 0 auto;padding:8px 12px;border:1px solid var(--rule-strong);background:var(--ink);color:var(--paper);
  font-size:.78rem;line-height:1.2;text-decoration:none;white-space:nowrap;transition:transform .16s ease,background-color .16s ease;
}
.report-link:hover{background:var(--accent);color:var(--paper);text-decoration:none}
.report-link:active{transform:translateY(1px)}
.project-actions{display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.report-link.secondary{background:transparent;color:var(--ink)}
.report-link.secondary:hover{background:var(--surface);color:var(--accent)}
.p-brief{width:100%;margin:15px 0 20px;color:var(--body)}

.proof-grid{display:grid;grid-template-columns:repeat(3,1fr);margin:0 0 24px;background:var(--surface)}
.proof-grid div{padding:15px 18px;border-right:1px solid var(--rule)}
.proof-grid div:last-child{border-right:0}
.proof-grid dt{color:var(--ink);font-family:var(--mono);font-size:1.28rem;font-weight:700;line-height:1.35}
.proof-grid dd{margin:3px 0 0;color:var(--muted);font-size:.78rem;line-height:1.5}

.project-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px;margin-bottom:22px}
.project-detail-grid h4{margin:0 0 5px;color:var(--ink);font-size:.88rem}
.project-detail-grid p{margin:0;color:var(--muted);font-size:.9rem;line-height:1.75}
.tech-stack{display:flex;flex-wrap:wrap;align-items:center;gap:7px 14px;padding-top:14px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:.68rem;color:var(--faint)}
.tech-stack strong{color:var(--ink);font-family:var(--serif);font-size:.78rem}

.paper-project{margin-top:30px;border-color:var(--rule)}
.r-link{text-decoration:none}

/* Other repositories */
.repolist{margin:58px auto 0;scroll-margin-top:24px}
.repo-grid{
  display:grid;grid-template-columns:1fr 1fr;
  border:1px solid var(--rule);
}
.repo{min-width:0;padding:18px 20px;border-bottom:1px solid var(--rule)}
.repo:nth-child(even){border-left:1px solid var(--rule)}
.repo.repo-wide{grid-column:1 / -1;border-right:0;border-bottom:0;border-left:0}
.r-head{display:flex;align-items:baseline;justify-content:space-between;gap:18px}
.r-name{min-width:0;margin:0;color:var(--ink);font-family:var(--mono);font-size:.94rem;font-weight:700;line-height:1.45}
.r-name a{text-decoration:none;overflow-wrap:anywhere}
.r-link{flex:0 0 auto;color:var(--faint);font-family:var(--mono);font-size:.66rem}
.r-desc{margin:5px 0 8px;color:var(--muted);font-size:.84rem;line-height:1.65}
.r-meta{display:flex;flex-wrap:wrap;gap:6px 12px;color:var(--faint);font-family:var(--mono);font-size:.64rem}

/* Footer */
.footer{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin:46px 0 40px;color:var(--faint);font-size:.76rem}
.footer-identity{display:grid;gap:1px}
.footer-identity strong{color:var(--ink);font-size:.82rem}
.footer-contact{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px 22px;font-family:var(--mono);font-size:.68rem}
.footer a{color:var(--muted);text-decoration:none}

@media (prefers-color-scheme:dark){
  :root{
    --paper:#131516;--surface:#1b1e1f;--ink:#f0f0eb;--body:#d9dad5;
    --muted:#afb2ad;--faint:#898e8b;--rule:#34383a;--rule-strong:#c8cbc7;--accent:#83b7cf;
  }
}

@media (max-width:760px){
  .wrap{width:100%;padding:0 20px}
  .titleblock{padding:48px 0 18px}
  .titleblock h1{font-size:1.9rem}
  .titleblock .sub{max-width:26em;margin:0 auto;font-size:.94rem;line-height:1.7}
  .nav{gap:20px;overflow-x:auto;justify-content:flex-start;padding:0 2px 4px;white-space:nowrap}
  .abstract{padding-bottom:34px}
  .current-focus{gap:6px 14px}
  .featured-project{padding:22px 18px}
  .project-topline{display:block}
  .project-actions{justify-content:flex-start;margin-top:14px}
  .report-link{display:inline-block;margin-top:14px}
  .project-actions .report-link{margin-top:0}
  .proof-grid{grid-template-columns:1fr}
  .proof-grid div{border-right:0;border-bottom:1px solid var(--rule)}
  .proof-grid div:last-child{border-bottom:0}
  .project-detail-grid{grid-template-columns:1fr;gap:18px}
  .repo-grid{grid-template-columns:1fr}
  .repo,.repo:nth-child(even),.repo-wide{grid-column:auto;padding:16px 18px;border-left:0}
  .footer{align-items:flex-start;flex-direction:column;gap:14px;margin-top:36px}
  .footer-contact{justify-content:flex-start}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
}

@media print{
  :root{--paper:#fff;--surface:#f4f4f4;--ink:#111;--body:#222;--muted:#555;--faint:#777;--rule:#ddd;--rule-strong:#222;--accent:#111}
  body{background:#fff;color:#000}
  .nav,.report-link,.r-link{display:none}
  .featured-project{break-inside:avoid}
}
