:root{--bg:#fff;--text:#2b2b2b;--muted:#6b6f76;--accent:#2a7fde;--accent-weak:#e8f2ff;--maxw:1100px}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,'Helvetica Neue',Arial,'Noto Sans',sans-serif;line-height:1.6}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.container{max-width:var(--maxw);margin:0 auto;padding:1.25rem}
.header{border-bottom:1px solid #eee;background:#fff;position:sticky;top:0;z-index:10}
.nav{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.menu{list-style:none;margin:0;padding:0;display:flex;gap:1rem;flex-wrap:wrap}.menu>li{position:relative}
.menu>li>a,.menu>li>span{display:block;padding:.75rem .5rem;border-radius:.5rem}.menu>li>a:hover,.menu>li>span:hover{background:var(--accent-weak)}
.menu .dropdown{position:absolute;left:0;top:100%;min-width:260px;background:#fff;border:1px solid #eee;border-radius:.75rem;padding:.25rem;margin-top:.25rem;display:none;box-shadow:0 10px 30px rgba(0,0,0,.06)}
.menu li:hover>.dropdown{display:block}.dropdown a{display:block;padding:.5rem .75rem;border-radius:.5rem}.dropdown a:hover{background:#f6f8fb}
.banner{width:100%;height:400px;background:#f2f4f7 center/cover no-repeat;display:flex;align-items:center;justify-content:center}
.banner .note{background:rgba(255,255,255,.8);padding:.5rem .75rem;border-radius:.5rem;color:#333;font-size:.9rem}
.main{padding:2rem 0}.footer{border-top:1px solid #eee;background:#fff;margin-top:2rem}.footer .cols{display:grid;grid-template-columns:1fr;gap:1rem}
@media(min-width:700px){.footer .cols{grid-template-columns:1fr 1fr 1fr}}
.cv h1{font-size:2rem;margin-bottom:.25rem}.cv .meta{color:var(--muted);margin-bottom:1rem}.cv section{margin:1.25rem 0}
.cv h2{font-size:1.25rem;border-left:4px solid var(--accent);padding-left:.5rem;margin-bottom:.5rem}
.cv ul{margin:.25rem 0 .75rem 1.25rem}.cv li{margin:.2rem 0}
.prose p{margin:.75rem 0;color:#333}