:root{--bg: #ffffff;--text: #1b1b1b;--muted: #5b5b5b;--rule: #d8d8d8;--link: #0b4f9c;--button-bg: #f4f4f4}:root[data-theme=dark]{--bg: #16181a;--text: #e6e6e6;--muted: #a0a0a0;--rule: #33383c;--link: #7fb0e8;--button-bg: #23272a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6}.page{max-width:720px;margin:0 auto;padding:2rem 1.25rem 3rem}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.toolbar{display:flex;justify-content:flex-end;margin-bottom:1.5rem}.theme-toggle{font:inherit;font-size:.85rem;color:var(--text);background:var(--button-bg);border:1px solid var(--rule);border-radius:4px;padding:.35rem .7rem;cursor:pointer}.theme-toggle:hover{border-color:var(--muted)}header{display:flex;gap:1.5rem;align-items:flex-start;padding-bottom:1.5rem;border-bottom:1px solid var(--rule)}.photo{width:150px;height:150px;flex:0 0 auto;object-fit:cover;border-radius:4px}h1{font-size:1.7rem;margin:0 0 .25rem;font-weight:600}.contact{list-style:none;padding:0;margin:0;font-size:.95rem}.contact li{margin-bottom:.15rem}section{padding-top:1.75rem}h2{font-size:1.1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .85rem;padding-bottom:.35rem;border-bottom:1px solid var(--rule)}h3{font-size:1rem;margin:0;font-weight:600}p{margin:.35rem 0}.meta{color:var(--muted);font-size:.92rem}.note{font-size:.92rem}.entries{list-style:none;padding:0;margin:0}.entries>li{margin-bottom:1.35rem}.entries>li:last-child{margin-bottom:0}.bullets{margin:.4rem 0 0;padding-left:1.2rem;color:var(--text)}.bullets li{margin-bottom:.2rem}.skills{margin:0}.skills>div{margin-bottom:.85rem}.skills>div:last-child{margin-bottom:0}.skills dt{font-weight:600}.skills dd{margin:0;color:var(--muted)}.project-group{margin-bottom:1.25rem}.project-group h3{color:var(--muted);font-size:.95rem;margin-bottom:.35rem}.project-group p{margin:0}.links{font-size:.92rem}footer{margin-top:2.5rem;padding-top:1rem;border-top:1px solid var(--rule);font-size:.9rem;color:var(--muted)}@media (max-width: 560px){header{flex-direction:column;gap:1rem}.photo{width:120px;height:120px}}
