Resume site with live content from Gitea
Deploy to GitHub Pages / build (push) Canceled after 0s
Deploy to GitHub Pages / deploy (push) Canceled after 0s

Replaces the static portfolio with a resume site that reads /data/resume.json:
the text comes from data/resume.json in this repo, and the projects are the
public Gitea repos tagged `resume`. Merges in the content of the hh.ru resume
(backend/DevOps skills, experience, languages) without personal details.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Emil
2026-09-20 20:55:05 +03:00
co-authored by Claude Sonnet 5
parent b001ddf6b5
commit 32c57a5ada
10 changed files with 719 additions and 249 deletions
+40
View File
@@ -102,3 +102,43 @@ a:focus-visible { outline:2px solid var(--acid); outline-offset:5px; }
.tool-grid { grid-template-columns:1fr; }.tool-grid a:nth-child(n) { border-right:0; padding:24px 0; }
.education { grid-template-columns:1fr; gap:20px; padding-bottom:70px; }.contact-grid a { grid-template-columns:80px 1fr 20px; }.contact-grid strong { font-size:12px; overflow-wrap:anywhere; }.footer-bottom { gap:20px; }.footer-bottom span:last-child { text-align:right; }
}
/* Resume site: skills, experience, live project list, side info. */
.skill-grid { display:grid; grid-template-columns:repeat(3,1fr); }
.skill-card { padding:34px 28px 34px 0; border-right:1px solid var(--line); border-bottom:1px solid var(--line); transition:background .25s; }
.skill-card:nth-child(3n+2), .skill-card:nth-child(3n) { padding-left:28px; }
.skill-card:nth-child(3n) { border-right:0; }
.skill-card:hover { background:linear-gradient(135deg,rgba(199,255,70,.09),transparent 68%); }
.skill-card h3 { font-size:22px; margin:30px 0 12px; letter-spacing:-.035em; }
.skill-card p { margin:0; color:#b0bab2; font-size:14px; line-height:1.65; }
.exp-item { display:grid; grid-template-columns:200px 1fr; gap:34px; padding:34px 0; border-bottom:1px solid var(--line); }
.exp-item > span { font:300 11px/1.6 'DM Mono',monospace; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.exp-item h3 { margin:0 0 16px; font-size:22px; letter-spacing:-.03em; }
.exp-item ul { margin:0; padding:0; list-style:none; display:grid; gap:9px; color:#b0bab2; line-height:1.6; }
.exp-item li::before { content:'—'; color:var(--muted); margin-right:10px; }
.status-note { margin:0; padding:44px 0; border-bottom:1px solid var(--line); color:var(--muted); font:400 12px/1.8 'DM Mono',monospace; }
.status-note a { color:var(--acid); border-bottom:1px solid rgba(199,255,70,.4); }
.status-note b { color:var(--ink); font-weight:500; }
.project-updated { margin:20px 0 0; color:var(--muted); font:300 10px 'DM Mono',monospace; text-transform:uppercase; letter-spacing:.05em; }
.about-grid { display:grid; grid-template-columns:1.25fr 1fr; gap:64px; padding-bottom:70px; }
.about-grid .education-list { padding-bottom:0; }
.side-info { padding-top:18px; }
.mini-heading { margin:0 0 14px; padding-bottom:10px; border-bottom:1px solid rgba(243,246,240,.35); font:500 11px 'DM Mono',monospace; text-transform:uppercase; letter-spacing:.11em; }
.side-info .mini-heading:not(:first-child) { margin-top:40px; }
.lang-list { list-style:none; margin:0; padding:0; }
.lang-list li { display:flex; justify-content:space-between; padding:10px 0; border-bottom:1px solid var(--line); }
.lang-list b { font:400 11px 'DM Mono',monospace; color:var(--acid); font-weight:400; }
.side-info .tag-list { margin-top:0; }
.contact-note { color:#92958a; font-style:normal; font-size:12px; }
@media (max-width:980px) {
.skill-grid { grid-template-columns:repeat(2,1fr); }
.skill-card:nth-child(n) { padding:34px 24px 34px 0; border-right:1px solid var(--line); }
.skill-card:nth-child(2n) { padding-left:24px; border-right:0; }
.about-grid { grid-template-columns:1fr; gap:40px; }
}
@media (max-width:760px) {
.skill-grid { grid-template-columns:1fr; }
.skill-card:nth-child(n) { padding:30px 0; border-right:0; }
.exp-item { grid-template-columns:1fr; gap:14px; padding:28px 0; }
.about-grid { padding-bottom:50px; }
}