
:root{--bg:#0a0e14;--panel:#111823;--line:#1e2a3a;--text:#d6deeb;--mute:#8a98ad;--accent:#2ee6a6;--accent2:#5ab0ff;--g1:rgba(46,230,166,.10);--g2:rgba(90,176,255,.10);--onaccent:#04120d;--navbg:rgba(10,14,20,.85)}
[data-theme=light]{--bg:#f6f8fb;--panel:#ffffff;--line:#dde4ee;--text:#1b2433;--mute:#566377;--accent:#0a8f66;--accent2:#1766c2;--g1:rgba(10,143,102,.10);--g2:rgba(23,102,194,.08);--onaccent:#ffffff;--navbg:rgba(246,248,251,.88)}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font:16px/1.65 Inter,system-ui,-apple-system,Segoe UI,sans-serif;
background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;background-attachment:fixed}
body::before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 20% 0%,var(--g1),transparent 55%),radial-gradient(ellipse at 90% 30%,var(--g2),transparent 50%),var(--bg);opacity:.93;z-index:-1}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.mono{font-family:"SF Mono",Menlo,Consolas,monospace}
.wrap{max-width:1000px;margin:0 auto;padding:0 24px}
nav{position:sticky;top:0;z-index:10;background:var(--navbg);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;justify-content:space-between;align-items:center;height:56px}
nav .logo{font-weight:700;color:var(--text)}nav .logo span{color:var(--accent)}
nav ul{display:flex;gap:22px;list-style:none;font-size:14px}nav ul a{color:var(--mute)}nav ul a:hover{color:var(--accent);text-decoration:none}
section{padding:84px 0 20px}
h2{font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:28px}
h2::before{content:"> ";opacity:.7}
.hero{padding:110px 0 40px;display:grid;grid-template-columns:1.6fr 1fr;gap:48px;align-items:center}
.hero .tag{color:var(--accent);font-size:14px;margin-bottom:12px}
.hero h1{font-size:clamp(36px,6vw,58px);line-height:1.1;margin-bottom:16px}
.hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{color:var(--mute);max-width:560px;margin-bottom:26px}
.cursor{display:inline-block;width:9px;height:1em;background:var(--accent);vertical-align:-2px;animation:b 1s steps(2) infinite}@keyframes b{50%{opacity:0}}
.btn{display:inline-block;padding:10px 18px;border-radius:6px;border:1px solid var(--accent);color:var(--accent);font-size:14px;margin-right:10px}
.btn.fill{background:var(--accent);color:var(--onaccent);font-weight:600}.btn:hover{text-decoration:none;box-shadow:0 0 18px rgba(46,230,166,.35)}
.avatar{width:100%;max-width:300px;aspect-ratio:1;object-fit:cover;border-radius:12px;border:1px solid var(--line);box-shadow:0 0 0 6px rgba(46,230,166,.06),0 20px 50px rgba(0,0,0,.5);justify-self:center}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:40px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px}
.stat b{display:block;font-size:28px;color:var(--accent)}.stat span{color:var(--mute);font-size:13px}
.about p{color:var(--mute);margin-bottom:14px;max-width:760px}.about p b{color:var(--text)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:22px;transition:.2s}
.card:hover{border-color:var(--accent);transform:translateY(-2px)}
.card h3{font-size:17px;margin-bottom:8px}.card p{color:var(--mute);font-size:14.5px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.chip{font-size:12px;padding:3px 9px;border:1px solid var(--line);border-radius:99px;color:var(--accent2)}
.timeline{border-left:2px solid var(--line);margin-left:6px}
.job{position:relative;padding:0 0 34px 28px}
.job::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}
.job.now::before{background:var(--accent);box-shadow:0 0 12px var(--accent)}
.job .when{font-size:13px;color:var(--accent)}
.job h3{font-size:18px}.job h3 span{color:var(--mute);font-weight:400}
.job ul{margin:10px 0 0 18px;color:var(--mute);font-size:15px}.job li{margin-bottom:5px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.list{list-style:none}.list li{padding:12px 0;border-bottom:1px solid var(--line)}.list li small{display:block;color:var(--mute)}
.contact{text-align:center;padding:60px 0}
.contact h3{font-size:30px;margin-bottom:10px}.contact p{color:var(--mute);margin-bottom:24px}
footer{border-top:1px solid var(--line);padding:26px 0;text-align:center;color:var(--mute);font-size:13px;margin-top:40px}
@media(max-width:760px){.hero,.two{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}nav ul{gap:12px;font-size:13px}.hero{padding-top:60px}}
.reveal{opacity:0;transform:translateY(14px);transition:.6s}.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}.cursor{animation:none}}

.theme{background:none;border:1px solid var(--line);color:var(--text);border-radius:6px;width:34px;height:34px;cursor:pointer;font-size:15px}.theme:hover{border-color:var(--accent)}
.navr{display:flex;align-items:center;gap:18px}
.term{background:#05080c;border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.35);color:#d6deeb}
.term .bar{display:flex;gap:6px;align-items:center;padding:10px 14px;background:#0d131b;border-bottom:1px solid #1e2a3a;font-size:12px;color:#8a98ad}
.term .bar i{width:11px;height:11px;border-radius:50%;display:inline-block}
.term .out{height:300px;overflow:auto;padding:14px 16px;font-size:13.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.term .out a{color:#2ee6a6}.term .out .c{color:#5ab0ff}.term .out .m{color:#8a98ad}
.term .in{display:flex;gap:8px;padding:0 16px 14px;font-size:13.5px}.term .in span{color:#2ee6a6}
.term input{flex:1;background:none;border:0;outline:0;color:#d6deeb;font:inherit}
.hints{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.hints button{background:none;border:1px solid var(--line);color:var(--mute);border-radius:99px;padding:3px 11px;font:12px "SF Mono",Menlo,monospace;cursor:pointer}.hints button:hover{color:var(--accent);border-color:var(--accent)}
.page{padding-top:70px}.page h1{font-size:clamp(30px,5vw,44px);margin-bottom:8px}.page .sub{color:var(--mute);margin-bottom:34px}
.post-card{display:block;color:var(--text)}.post-card:hover{text-decoration:none}
.meta{font-size:12.5px;color:var(--mute)}
.article{max-width:740px}.article h1{font-size:clamp(28px,4.5vw,40px);line-height:1.2;margin:6px 0 20px}
.article h2{font-size:22px;color:var(--text);text-transform:none;letter-spacing:0;margin:34px 0 12px}.article h2::before{content:""}
.article p,.article li{color:var(--text);margin-bottom:14px}.article ul,.article ol{margin:0 0 14px 22px}
.article code{background:var(--panel);border:1px solid var(--line);padding:1px 6px;border-radius:4px;font-size:.9em;font-family:"SF Mono",Menlo,monospace}
.article pre{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;overflow:auto;margin-bottom:16px}.article pre code{border:0;padding:0;background:none}
.article blockquote{border-left:3px solid var(--accent);padding-left:14px;color:var(--mute);margin-bottom:14px}
.tagrow{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.filters button{background:none;border:1px solid var(--line);color:var(--mute);border-radius:99px;padding:5px 14px;cursor:pointer;font-size:13px}.filters button.on,.filters button:hover{color:var(--accent);border-color:var(--accent)}
.more{display:inline-block;margin-top:18px;font-size:14px}
.draft{color:#f0b429;border-color:#f0b429}
.lab-cols{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}
@media(max-width:820px){.lab-cols{grid-template-columns:1fr}}
.box{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px}
.box h3{font-size:15px;margin-bottom:10px}
textarea,.field{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:10px;font:14px "SF Mono",Menlo,monospace;outline:0}
textarea:focus,.field:focus{border-color:var(--accent)}
.row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
button.btn{background:none;cursor:pointer;font-family:inherit}button.btn.fill{background:var(--accent)}
.chat{height:300px;overflow:auto;display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.msg{padding:8px 12px;border-radius:10px;max-width:88%;font-size:14.5px;white-space:pre-wrap;word-break:break-word}
.msg.u{align-self:flex-end;background:var(--accent);color:var(--onaccent)}.msg.b{align-self:flex-start;background:var(--bg);border:1px solid var(--line)}
.ok{color:var(--accent)}.bad{color:#ff6b6b}.warn{color:#f0b429}
.kv{font-size:13.5px}.kv div{padding:6px 0;border-bottom:1px solid var(--line)}.kv b{display:inline-block;min-width:96px;color:var(--mute);font-weight:500}
pre.j{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px;overflow:auto;font-size:13px;margin-top:6px}
.note{font-size:13px;color:var(--mute);margin-top:12px}
details{margin-top:12px}summary{cursor:pointer;color:var(--accent);font-size:14px}details p,details li{color:var(--mute);font-size:14.5px;margin-top:8px}details ul{margin-left:20px}
