:root{--bg:#F4F6FA;--surface:#fff;--ink:#0D1B2A;--muted:#55657A;--line:#DCE3EC;--accent:#2457E6;--ok:#1FBF8F;--r:10px}
@media (prefers-color-scheme:dark){:root{--bg:#0A1522;--surface:#101F31;--ink:#E8EEF6;--muted:#92A3B8;--line:#1E3047;--accent:#6D93FF;--ok:#36D6A3}}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 "IBM Plex Sans",system-ui,sans-serif}
a{color:var(--accent)}a:focus-visible,button:focus-visible{outline:3px solid var(--signal);outline-offset:3px}
.wrap{max-width:1040px;margin:0 auto;padding:0 24px}
header.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;justify-content:space-between;align-items:center;height:60px}
.brand{font:700 18px "Bricolage Grotesque",sans-serif;color:var(--ink);text-decoration:none}
nav a{margin-left:22px;color:var(--muted);text-decoration:none;font-size:15px}nav a:hover{color:var(--ink)}
h1,h2,h3{font-family:"Bricolage Grotesque",sans-serif;line-height:1.1;margin:0}
.hero{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;padding:84px 24px 84px}
.hero h1{font-size:clamp(44px,7vw,76px);font-weight:800;letter-spacing:-.03em}
.hero p.lead{font-size:20px;color:var(--muted);max-width:30em;margin:22px 0 28px}
.btns{display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-block;padding:11px 20px;border-radius:8px;text-decoration:none;font-weight:600;border:1px solid var(--ink);color:var(--ink)}
.btn.primary{background:var(--ink);color:var(--bg)}
section{padding:64px 0;border-top:1px solid var(--line)}
section>.wrap>h2{font-size:34px;margin-bottom:28px;letter-spacing:-.02em}
.two{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.facts{display:grid;grid-template-columns:repeat(3,auto);gap:18px;margin-top:20px}
.facts b{display:block;white-space:nowrap;font:800 30px "Bricolage Grotesque",sans-serif;color:var(--accent);line-height:1}
.facts span{color:var(--muted);font-size:14px}
.timeline{border-left:2px solid var(--line);padding-left:26px;margin-left:6px}
.job{position:relative;margin-bottom:38px}
.job::before{content:"";position:absolute;left:-34px;top:8px;width:12px;height:12px;border-radius:50%;background:var(--accent)}
.job h3{font-size:22px}.job .meta{color:var(--muted);font-size:15px;margin:4px 0 12px}
.job ul{margin:0;padding-left:20px}.job li{margin-bottom:6px}
.skills{display:grid;grid-template-columns:repeat(2,1fr);gap:0 40px}
.skills div{padding:14px 0;border-bottom:1px solid var(--line)}
.skills b{display:block;font-size:15px}.skills span{color:var(--muted);font-size:15px}
.list a.item{display:block;padding:20px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.list a.item:hover h3{color:var(--accent)}
.list h3{font-size:22px}.list p{margin:6px 0 0;color:var(--muted)}
.list small{color:var(--muted)}
.tag{display:inline-block;border:1px solid var(--line);border-radius:99px;padding:0 10px;font-size:13px;margin-right:6px;color:var(--muted)}
.empty{color:var(--muted);border:1px dashed var(--line);border-radius:var(--r);padding:22px}
footer{border-top:1px solid var(--line);padding:36px 0;color:var(--muted);font-size:15px}
article.post{max-width:700px;margin:56px auto 80px;padding:0 24px;font-family:"IBM Plex Serif",Georgia,serif;font-size:18px;line-height:1.75}
article.post h1{font-size:clamp(34px,5vw,48px);margin-bottom:10px}
article.post h2{font-size:28px;margin:44px 0 12px}article.post h3{font-size:21px;margin:30px 0 8px}
article.post pre{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;overflow-x:auto;font-size:14px;line-height:1.5}
article.post code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88em}
article.post :not(pre)>code{background:var(--surface);border:1px solid var(--line);padding:1px 6px;border-radius:5px}
article.post blockquote{margin:24px 0;padding-left:18px;border-left:3px solid var(--signal);color:var(--muted)}
article.post img{max-width:100%}article.post table{border-collapse:collapse;display:block;overflow-x:auto}
article.post td,article.post th{border:1px solid var(--line);padding:6px 10px}
.pagehead{padding:64px 0 8px}.pagehead h1{font-size:clamp(36px,5vw,54px)}
@media (max-width:760px){.hero,.two{grid-template-columns:1fr}.skills{grid-template-columns:1fr}.facts{grid-template-columns:1fr 1fr 1fr}nav a{margin-left:14px}.hero{padding-top:48px}}

.console{background:#07111C;border:1px solid #1E3047;border-radius:12px;padding:20px 22px;font:14px/1.7 "JetBrains Mono",ui-monospace,Consolas,monospace;color:#C9D6E6;overflow-x:auto}
.console .bar{display:flex;gap:7px;margin-bottom:14px}.console .bar i{width:11px;height:11px;border-radius:50%;background:#26394F}
.console p{margin:0;white-space:pre;opacity:0;animation:show .01s forwards;animation-delay:calc(var(--i)*.28s + .3s)}
.console .c{color:#7FA8FF}.console .ok{color:#36D6A3}.console .d{color:#6F829A}
@keyframes show{to{opacity:1}}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.chips span{background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:3px 13px;font-size:14px}
@media (prefers-reduced-motion:reduce){.console p{animation:none;opacity:1}html{scroll-behavior:auto}}
.composer{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:40px 0 80px}
.composer label{display:block;font-size:14px;color:var(--muted);margin:12px 0 4px}
.composer input,.composer textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}
.composer textarea{min-height:380px;font:14px/1.6 "JetBrains Mono",ui-monospace,Consolas,monospace}
.composer .preview{border:1px solid var(--line);border-radius:var(--r);padding:8px 22px;background:var(--surface);overflow:auto;max-height:80vh}
@media (max-width:760px){.hero{grid-template-columns:1fr;padding-top:48px}.composer{grid-template-columns:1fr}}

.aside{display:flex;flex-direction:column;align-items:flex-start}.portrait{width:200px;height:auto;border-radius:14px;border:1px solid var(--line);display:block}
.pages{margin-bottom:80px;user-select:none;-webkit-user-select:none}
.pages canvas{display:block;max-width:100%;margin:0 auto 18px;border:1px solid var(--line);border-radius:6px;background:#fff;box-shadow:0 1px 6px rgba(13,27,42,.08)}
@media print{.pages{display:none}}
